HarmonyOS page如何监听数据变化
page如何监听一个单例中的数据变化,page的struct不支持registerDelegate。目前的解决方案是给page一个object成员进行监听,是否有更合适的方案。aboutToAppear注册的监听,理论上是否需要在aboutToDisappear中移除?
export interface LoginDelegate {
onLogin(): void
onLogout(): void
}
export class LoginService {
private static instance: LoginService;
delegateArray: Array<LoginDelegate> = []
registerDelegate(delegate: LoginDelegate): void {
this.delegateArray.push(delegate)
}
// 后面是一些业务接口,比如登录、登出
// 当登录状态发生变化时通过delegate发出
}
class LoginPageAgent implements LoginDelegate {
@Track status: LoginStatus = LoginStatus.LoggedOut;
onLogin(): void {
this.status = LoginStatus.LoggedIn
}
onLogout(): void {
this.status = LoginStatus.LoggedOut
}
}
@Component
struct LoginPage {
@State agent: LoginPageAgent = new LoginPageAgent()
aboutToAppear(): void {
LoginService.shared().registerDelegate(this.agent)
}
build() {
Column({}) {
if (this.agent.status == LoginStatus.LoggedIn) {
Text(`已登录`)
} else {
this.loginInput()
}
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 装饰器数据变化监听
572浏览 • 1回复 待解决
HarmonyOS数据库数据变化是否可以监听
1310浏览 • 1回复 待解决
HarmonyOS @Builde修饰器内, 如何监听到isNormalMode的数据变化
585浏览 • 1回复 待解决
如何监听页面page的变化。 增加和删除。有一个位置可以抓到这些变化的状态。
1103浏览 • 1回复 待解决
HarmonyOS 如何监听系统主题变化
874浏览 • 1回复 待解决
HarmonyOS 如何监听组件自身尺寸变化
757浏览 • 1回复 待解决
HarmonyOS 如何监听某个变量是否变化
725浏览 • 1回复 待解决
鸿蒙如何监听键盘高度变化
322浏览 • 1回复 待解决
如何监听窗口大小的变化
3273浏览 • 1回复 待解决
如何监听window大小的变化
1275浏览 • 1回复 待解决
HarmonyOS 网络变化监听失效
774浏览 • 1回复 待解决
HarmonyOS onMemoryLevel监听内存变化
580浏览 • 1回复 待解决
HarmonyOS 如何监听折叠屏折叠状态变化
1009浏览 • 1回复 待解决
HarmonyOS 如何监听修改系统时间的变化?
986浏览 • 1回复 待解决
HarmonyOS 如何监听text文本变化的行数?
1158浏览 • 0回复 待解决
HarmonyOS 如何监听到音频焦点的变化
825浏览 • 1回复 待解决
HarmonyOS 如何监听数组元素属性的变化?
1547浏览 • 1回复 待解决
#鸿蒙学习大百科#如何监听preference中的数据的变化?
1099浏览 • 2回复 待解决
如何监听数组内对象属性变化
3140浏览 • 1回复 待解决
HarmonyOS 音频设备变化监听
915浏览 • 1回复 待解决
子组件如何监听Page的onPageShow/onPageHide事件
3430浏览 • 1回复 待解决
HarmonyOS 如何实时监听NavPathStack的size的变化?
604浏览 • 1回复 待解决
#鸿蒙学习大百科#如何监听分布式数据对象的变化?
1056浏览 • 1回复 待解决
HarmonyOS 监听所有page的生命周期
1267浏览 • 1回复 待解决
HarmonyOS 监听Page第一帧上屏
759浏览 • 1回复 待解决
可以使用事件订阅实现监听数据变化,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-eventhub-V5
取消监听的位置随意,只要能在页面销毁之前取消就可以了。