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

相关推荐
讯方洋哥18 分钟前
HarmonyOS App开发——关系型数据库应用App开发
数据库·harmonyos
巴德鸟1 小时前
华为手机鸿蒙4回退到鸿蒙3到鸿蒙2再回退到EMUI11 最后关闭系统更新
华为·智能手机·harmonyos·降级·升级·回退·emui
一起养小猫1 小时前
Flutter for OpenHarmony 实战_魔方应用UI设计与交互优化
flutter·ui·交互·harmonyos
一只大侠的侠2 小时前
Flutter开源鸿蒙跨平台训练营 Day7Flutter+ArkTS双方案实现轮播图+搜索框+导航组件
flutter·开源·harmonyos
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day9分类数据的获取与渲染实现
flutter·开源·harmonyos
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day 5Flutter开发鸿蒙电商应用
flutter·开源·harmonyos
不爱吃糖的程序媛4 小时前
Capacitor:跨平台Web原生应用开发利器,现已全面适配鸿蒙
前端·华为·harmonyos
一只大侠的侠5 小时前
Flutter开源鸿蒙跨平台训练营 Day6ArkUI框架实战
flutter·开源·harmonyos
一只大侠的侠5 小时前
Flutter开源鸿蒙跨平台训练营 Day 4实现流畅的下拉刷新与上拉加载效果
flutter·开源·harmonyos
早點睡3906 小时前
高级进阶 ReactNative for Harmony 项目鸿蒙化三方库集成实战:react-native-drag-sort
react native·react.js·harmonyos