[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",
  ]
}
相关推荐
蜡台4 天前
Vue2 + TS,分路径参数、查询参数、装饰器组件 / Vue.extend 两种写法,同时补充类型约束、监听路由、动态路由取值。
前端·javascript·vue.js·router
敲代码的鱼哇4 天前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·ios·pdf·鸿蒙·harmony
aqi0010 天前
一文理清 HarmonyOS 6.0.2 涵盖的十个升级点
android·华为·harmonyos·鸿蒙·harmony
aqi0021 天前
一文速览 HarmonyOS 6.0.1 引入的十个新特性
android·华为·harmonyos·鸿蒙·harmony
aqi001 个月前
一文读懂 HarmonyOS 6.1 带来的十大重要升级
android·华为·harmonyos·鸿蒙·harmony
~央千澈~1 个月前
《2026鸿蒙NEXT纯血开发与AI辅助》第六章:「微距」项目启动——工程创建与整体架构设计-卓伊凡
人工智能·harmony·鸿蒙开发·鸿蒙next·harmony os
~央千澈~1 个月前
《2026鸿蒙NEXT纯血开发与AI辅助》第五章:选择成熟方案,创建第一个鸿蒙应用并成功运行-卓伊凡
人工智能·华为·harmonyos·harmony·harmony os
Huanzhi_Lin1 个月前
鸿蒙NEXT出包
华为·harmonyos·鸿蒙·harmony·鸿蒙next·hap
蜡台2 个月前
Vue实现动态路由
前端·javascript·vue.js·router
蜡台2 个月前
Vue3 props ref router 数据通讯传输等使用记录
前端·javascript·vue.js·vue3·router·ref