鸿蒙 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?

相关推荐
行者-全栈开发3 小时前
【鸿蒙心迹】三方库移植(二)——CMake 交叉编译与符号冲突排查实录(HarmonyOS 7.x)
harmonyos·cmake·交叉编译·三方库移植·ohos·符号冲突
梦想不只是梦与想5 小时前
鸿蒙三方库源码调试
harmonyos·断点调试·三方源码调试
用户117910488336 小时前
AI输出满屏井号星号?hmharness把Markdown渲染成终端表格 GitHub:swsgbl/hmharness
ai编程·harmonyos
了一1238 小时前
鸿蒙ArkWeb 长截图(滚动截图)技术方案总结
harmonyos
熊猫钓鱼>_>9 小时前
平行视界兼容模式与魔法变量配置避坑【鸿蒙心迹】
运维·服务器·开发语言·笔记·华为·harmonyos·openharmony
罗四强10 小时前
第2篇:环境搭建:DevEco Studio 安装 + 第一个 Hello World
harmonyos·鸿蒙·鸿蒙系统
用户1179104883311 小时前
AI终端里复制不了代码?hmharness把鼠标还给终端 GitHub:swsgbl/hmharness
ai编程·harmonyos
贾伟康13 小时前
HarmonyOS 端侧智能体长对话压缩:摘要版本、证据索引与安全回退
harmonyos·arkts·状态恢复·上下文压缩·端侧智能体
NJPJI_Yang14 小时前
鸿蒙操作系统小艺 Skill 开发实战:让应用被 HarmonyOS 7 一句话召唤
pytorch·深度学习·harmonyos
redtank200015 小时前
纯血鸿蒙学习效率三件套实测:背单词艾宾浩斯曲线、时间记录与睡眠辅助
学习·华为·harmonyos