OH官方文档AppStorage的相关问题

weggle 显示全部楼层 发表于 2023-12-25 13:37:13

问题:(文档链接)文档中提到不建议借助@StorageLink的双向同步机制实现事件通知,每次更新storageLink变量时,就算storageLink变量没有绑定到某个UI组件,也会触发自定义组件的刷新。与我的理解相悖,我认为不会触发UI组件的更新。

依据:我看了一下当前的自定义UI组件继承了ViewPU类(源码位于arkui/ace_engine/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_view.ts) ,当更新的storageLink变量没有绑定到某个UI组件时,自定义UI组件会在storageLink变量更新时会执行viewPropertyHasChanged,由于dependentElemIds.size==0,应该不会执行this.markNeedUpdate()函数,不会触发UI组件的更新。想请问一下是否有开发者可以解释一下?

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论2

zhangyixin13

沙发 发表于 2023-12-26 17:23:56
示例代码表达的意思是对的,改了@StorageLink('tapIndex')的值,触发了@Watch的事件,在这个事件里改了状态变量 @State tapColor: Color,这个触发了刷新。tapIndex没有绑定UI组件,确实不会直接触发UI更新,但是这种事件通知的机制”间接“触发了UI刷新。示例想要表达的意思就是不要用示例代码里的这种写法触发刷新,但是文字描述有误,所以给您带来了误解。感谢您的反馈,文档修改中,给您带来不便深表歉意。

weggle

发表于 2023-12-26 19:19  IP属地: 江苏省扬州市

回复 zhangyixin13: 好的,多谢您百忙之中的回复

【1 条回复】

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部