HarmonyOS鸿蒙Next中LocalStorage和AppStorage

HarmonyOS鸿蒙Next中LocalStorage和AppStorage cke_214.png

图中StorageLink/Prop和LocalStorageLink/Prop是先传值给父组件在由父组件将值传给子组件,为什么不直接传给子组件,出于什么考虑?


更多关于HarmonyOS鸿蒙Next中LocalStorage和AppStorage的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

【背景知识】

  • LocalStorage:LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage支持UIAbility实例内多个页面间状态共享。
  • AppStorage:AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。

【解决方案】

@StorageLink/Prop和@LocalStorageLink/Prop也是可以直接在子组件中使用的。这个图片的意思是子组件可以通过@Link@Prop接收来字父组件的@StorageLink/Prop和@LocalStorageLink/Prop修饰的变量。

更多关于HarmonyOS鸿蒙Next中LocalStorage和AppStorage的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可能是节点树的原因吧,你先找到父节点,才能拿到子节点。(猜的)

LocalStorage是页面级状态管理,数据仅在当前页面生效,页面销毁时数据清除。AppStorage是应用全局状态管理,数据在整个应用生命周期内共享和持久化。两者均基于ArkTS实现,使用@LocalStorageProp@LocalStorageLink@StorageProp@StorageLink装饰器进行数据绑定与同步。

在HarmonyOS Next中,LocalStorage和AppStorage的设计通过StorageLink/Prop和LocalStorageLink/Prop机制实现数据传递,这种间接传递方式主要基于以下考虑:

  1. 数据一致性与管理:通过父组件中转,确保数据变更的源头可控,避免子组件直接修改可能引发的状态不一致问题。父组件作为数据管理者,可以统一处理逻辑和验证。

  2. 组件解耦:子组件无需直接依赖具体存储实例,仅通过props接收数据,降低了组件间的耦合度,提升了可复用性和测试性。

  3. 性能优化:间接传递允许框架在父层级进行变更检测和优化渲染,减少不必要的子组件更新,从而提升整体性能。

  4. 遵循单向数据流:这种设计符合前端架构中单向数据流的模式(如React/Vue),使数据流向清晰,易于调试和维护。

总之,该设计侧重于维护数据可靠性、组件独立性及框架性能,而非追求直接传递的简便性。

回到顶部