鸿蒙 Navigation组件下的组件获取pageStack问题

前情提要

最近学了下鸿蒙开发,刚入坑,问题不少,记录一下。

问题描述

在Navigation下的HomePage组件,通过Provide、Consume获取pageStack

在HomePage组件中 @Builder 定义的WaterItem 下的点击事件获取this.pageStack为undefined

typescript 复制代码
// 主入口文件
@Entry
@Component
struct IndexPage {
  @Provide('pageStack') pageStack: NavPathStack = new NavPathStack()

  build() {
      Navigation(this.pageStack) {
          HomePage()
      }
      .width('100%').height('100%').backgroundColor('#FFFFFF')
      .hideTitleBar(true)
      .hideToolBar(false)
  }
}

HomePage组件代码

typescript 复制代码
// HomePage 组件
@Component
struct HomePage {
  @Consume('pageStack') pageStack:NavPathStack;

  abc: number = 1;

  dataSource: WaterFlowDataSource = new WaterFlowDataSource();

  @Builder
  WaterItem(item: TGridItem) {
    Column(){
        Button('跳转')
          .width('70vp')
          .height('30vp')
          .backgroundColor('#000000')
          .fontColor('green')
          .onClick(()=> {
		      this.pageStack.pushPathByName('Detail', null)
		  })
	}
  }

  build() {
     Column(){
       WaterflowList({
         gridData: this.dataSource,
         waterflowItemParam: this.WaterItem
       })
         .width('100%')
         .height('100%')
     }
    .width('100%')
    .height('100%')
  }
}

这里this.pageStack是undefined会直接导致闪退,this.abc是可以直接获取到值的。

解决方案:

这里换成这个写法,就可以了。

typescript 复制代码
waterflowItemParam: item => { this.WaterItem(item) }

原因不太清楚,this 指向问题?但是为什么能访问到abc?

相关推荐
木木子229 小时前
# 待办事项应用深度解析:ForEach 列表渲染与 CRUD 操作实战
windows·华为·harmonyos
2501_9437823511 小时前
【共创季稿事节】摇骰子:用 ArkTS 实现随机动画与交互反馈
运维·nginx·交互·harmonyos·鸿蒙·鸿蒙系统
zjxcq52011 小时前
【共创季稿事节】鸿蒙原生ArkTS布局之道——layoutWeight权重分配机制深度解析
华为·harmonyos
2501_9437823514 小时前
【共创季稿事节】猜数字游戏:二分法思维与交互式反馈
前端·游戏·microsoft·harmonyos·鸿蒙·鸿蒙系统
想你依然心痛14 小时前
AtomCode 在 HarmonyOS 开发环境中的表现测评
跨平台·harmonyos·arkts·信创·国产系统
2501_9437823515 小时前
【共创季稿事节】 倒计时器:时分秒选择器与定时器的协同工作
前端·华为·harmonyos·鸿蒙·鸿蒙系统
TrisighT15 小时前
Electron 鸿蒙 PC 上做本地搜索,Fuse.js 比 SQLite 快 6 倍——但我愣是选了最慢的方案
electron·sqlite·harmonyos
独守一片天15 小时前
HarmonyOS 6.1.0 Call Service 来电识别与安全通信怎么设计?
安全·华为·harmonyos
AI创界者15 小时前
【硬核教程】鸿蒙 HarmonyOS 4.2 / 4.3 完美配置 GMS 运行环境(纯净版/不弹窗/全机型通用)
华为·harmonyos
2501_9423895519 小时前
小米寥寥几家车企设计汽车顶棚
华为·编辑器·时序数据库·harmonyos