HarmonyOS 关于hmosworld Navigation一些管理问题的疑问?

在hmosworld官方项目中的mainPage里,

@Provide(‘appPathStack’) appPathStack: NavPathStack = new NavPathStack();

@Provide(‘minePathStack’) minePathStack: NavPathStack = new NavPathStack();

@Provide(‘discoverPathStack’) discoverPathStack: NavPathStack = new NavPathStack();

@Provide(‘settingPathStack’) settingPathStack: NavPathStack = new NavPathStack();

我看minePathStack是管理mineView里面路由的,discoverPathStack管理探索页路由的,这个appPathStack的作用是干什么的?在探索View中我发现有

@Consume(‘discoverPathStack’) discoverPathStack: NavPathStack;

@Consume(‘appPathStack’) appPathStack: NavPathStack;

这种声明,用于不同的跳转逻辑,是有什么特殊意义吗?

阅读 585
1 个回答

问题一:NavPathStack 表示路由栈信息。appPathStack 在首页MainPage 中 Navigation(this.appPathStack) {} 使用,是用于管理当前页面的(即首页),在Navigation组件中,里面绘制了首页展示信息如tab标签等,里面没有涉及到this.appPathStack .pushPath({ name: “xxx” }),所以他没有路由跳转,只是管理当前首页展示页面,没有其他路由栈。

问题二:主要是理解这个@Provide和@Consume的关系:

@Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景,实现跨层级传递。

其中@Provide装饰的变量是在祖先组件中,可以理解为被“提供”给后代的状态变量。@Consume装饰的变量是在后代组件中,去“消费(绑定)”祖先组件提供的变量。

相关资料:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-provide-and-consume-V5

不同的@Consume修饰的 NavPathStack 是子组件去绑定父组件的NavPathStack,用来实现调用不同的路由栈进行页面跳转。discoverPathStack是管理探索页路由的,appPathStack是管理首页的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进