[Harmony]Router跳转新页面和关闭回传数据

使用router.pushUrl跳转新页面,在onPageShow方法接收后面页面的回调。后面页面中,使用router.back关闭页面和回传数据。

注意onPageShow方法不执行原因:

若当前组件未通过router.pushUrl导航或未在pages.json中配置为路由页面,onPageShow不会触发。

自定义组件默认无页面生命周期,需显式声明@Entry装饰器。

MFRechargeAddMemberView

TypeScript 复制代码
export interface MFRechargeAddMemberParams {
  inputSubmit?: boolean // 输入提交
  inputPassword?: string // 输入的密码
}

@Entry
@Component
struct MFRechargeAddMemberView {
  @State saveZFMMText: string = '' // 支付密码 

  onPageShow() {
    // 后面页面的回调
    const params = this.getUIContext().getRouter().getParams() as MFRechargeAddMemberParams;
    if (params?.inputSubmit == true) {
      let pw = params.inputPassword
      if (pw != undefined && !isBlank(pw)) {
        this.saveZFMMText = pw
      } else {
        this.saveZFMMText = ''
      }
    }
  }

  build() {
    Column() {
        Button('支付密码设置') 
        .onClick(() => {
           this.tapPayPassword()
        })
    }
    .width('100%')
    .height('100%')
  }

  // 支付密码设置
  private tapPayPassword() {
    this.getUIContext().getRouter().pushUrl({
      url: 'pages/features/memberRecharge/MFPayPasswordSetView',
      params: {
        parIsEdit: false,
      }
    }, router.RouterMode.Standard, (err) => {
      if (!err) {
        //console.log('pushUrl成功')
      }
    })
  }
  
}

MFPayPasswordSetView

TypeScript 复制代码
export interface MFPayPasswordSetParams {
  parIsEdit: boolean,
}

@Entry
@Component
struct MFPayPasswordSetView {
  @State isEdit: boolean = false
  
  @State private usePassword: string = ''

  aboutToAppear() {
    const params = this.getUIContext().getRouter().getParams() as MFPayPasswordSetParams;
    if (params) {
      this.isEdit = params.parIsEdit
    }
  }

  build() {
    Column() {
       Button('返回') 
        .onClick(() => {
            //this.getUIContext().getRouter().back();
            this.getUIContext().getRouter().back({
              url: 'pages/features/memberRecharge/MFRechargeAddMemberView',
              params: {
                inputSubmit: true,
                inputPassword: this.usePassword
              }
            })
        })
    }
    .justifyContent(FlexAlign.Start)
    .width('100%')
    .height('100%')
    .onAppear(()=>{

    })
  }   

main_pages.json

TypeScript 复制代码
{
  "src": [
    "pages/Index",

    "pages/features/memberRecharge/MFRechargeAddMemberView",
    "pages/features/memberRecharge/MFPayPasswordSetView",
  ]
}
相关推荐
贾伟康8 天前
【句匠|10】HarmonyOS ArkTS 分类句库实战:复用列表结构并保持导航参数类型安全
harmonyos·arkts·router·分类导航·题库列表
贾伟康24 天前
【中国方言题库|06】HarmonyOS ArkTS 闽南语与客家话实战:统一分库页面导航与空状态
harmonyos·arkts·arkui·router·空状态
aqi001 个月前
鸿蒙版本的小小机器人APP开放源码啦
人工智能·华为·harmonyos·鸿蒙·harmony
aqi003 个月前
一文速览 HarmonyOS 6.1.1 推出的十个新特性
android·华为·harmonyos·鸿蒙·harmony
rising start3 个月前
七、Vue Router
前端·vue.js·router
胖胖雕3 个月前
LLM增强的网易云API部署用于鸿蒙原生音乐app: Melotopia
docker·node.js·harmony
蜡台4 个月前
Vue2 + TS,分路径参数、查询参数、装饰器组件 / Vue.extend 两种写法,同时补充类型约束、监听路由、动态路由取值。
前端·javascript·vue.js·router
敲代码的鱼哇4 个月前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·ios·pdf·鸿蒙·harmony
aqi004 个月前
一文理清 HarmonyOS 6.0.2 涵盖的十个升级点
android·华为·harmonyos·鸿蒙·harmony