HarmonyOS 鸿蒙Next 被@StorageProp修饰的应用全局状态变量的改变是否只改变跟它相关的UI组件?
HarmonyOS 鸿蒙Next 被@StorageProp修饰的应用全局状态变量的改变是否只改变跟它相关的UI组件?
如题
比如我在判断用户是否登录时,设置了全局状态变量isLogin。 AppStorage.setOrCreate(‘isLogin’, true);
如果我在其他地方用此变量来判断用户是否登录
@StorageProp(‘isLogin’) isLogin: boolean = false;
当此变量isLogin被全局更改时,我知道相关的ui组件会更改。但是我有个问题,就是跟isLogin的函数调用、路由跳转是否也会执行?比如,当用户点击某个tab时,会跳转至下个页面,但是前提是isLogin=true。自定义组件的方法,比如aboutToAppear、aboutToDisappear、onPageShow等,如果有isLogin相关判断呢,是否也会重新执行?
更多关于HarmonyOS 鸿蒙Next 被@StorageProp修饰的应用全局状态变量的改变是否只改变跟它相关的UI组件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
不能重新执行,只触发重新渲染,如果要重新执行的话必须有绑定方法,通过[@Watch](/user/Watch) 来绑定一个方法,参考:
AppStorage.setOrCreate('PropA', false);
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@StorageProp](/user/StorageProp)('PropA') [@Watch](/user/Watch)('onChange') propA: boolean = false;
onChange() {
console.log(`propA change`);
}
aboutToAppear(): void {
this.propA = true;
}
build() {
Column() {
Text(`${this.propA}`)
Button('change')
.onClick(() => {
AppStorage.setOrCreate('PropA', false);
console.log(`PropA: ${this.propA}`);
})
}
}
}
更多关于HarmonyOS 鸿蒙Next 被@StorageProp修饰的应用全局状态变量的改变是否只改变跟它相关的UI组件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html