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