HarmonyOS 关于@Watch监听状态问题
示例代码如下:
@State @Watch('attrChange')
attr: Attr = new Attr(new Start())
attrChange() {
console.log('attr has changed:' + JSON.stringify(this.attr))
}
build() {
Column() {
Button('test').onClick((event: ClickEvent) => {
console.log('000:' + JSON.stringify(this.attr))
new Action().do(this.attr)
console.log('111:' + JSON.stringify(this.attr))
})
}
.height('100%')
.width('100%')
}
class Action {
do(attr: Attr) {
const newStart = new Start()
newStart.info = {
'title': 'fadshf'
}
attr.start = newStart
}
}
class Attr {
name: string = 'kac'
age: number = 18
info: Record<string, string> = {
'title': 'www',
'msg': 'qqq',
}
start: Start
constructor(start: Start) {
this.start = start
}
}
@Observed
class Start {
road: string = 'ttt'
color: string = 'yellow'
info: Record<string, string> = {
'aaaa': '1111',
'bbbb': '22222'
}
}
通过new Action().do(this.attr)将@State修饰的this.attr变量传入业务代码中,并改变其值,可以看到在'000','111'的log有打印变化,但是在attrChange()没打印log。而不通过new Action().do()改变值,直接在button的点击事件里改变this.attr中的start变量是可以触发attrChange()打印日志的。@State修饰的变量是否不支持传入业务代码进行处理?还是@Watch不支持观测复杂对象的属性变化?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 状态变量更新及其@watch监听问题
1208浏览 • 1回复 待解决
HarmonyOS watch不能监听provide
710浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用@Watch装饰器监听状态变量变化?
968浏览 • 1回复 待解决
HarmonyOS 关于ArkUI中状态栏的问题
1298浏览 • 1回复 待解决
HarmonyOS @Watch函数调用问题
1314浏览 • 1回复 待解决
#鸿蒙通关秘籍#怎样在ArkTS中使用@Watch装饰器监听状态变量的变化?
1981浏览 • 1回复 待解决
HarmonyOS 关于监听网络变化的功能的问题
1051浏览 • 1回复 待解决
HarmonyOS 关于状态管理
1330浏览 • 1回复 待解决
HarmonyOS 关于CustomDialog使用@Link监听数据闪退问题
1215浏览 • 1回复 待解决
在自定义组件里使用watch监听
1400浏览 • 1回复 待解决
HarmonyOS 监听折叠状态回调里获取屏幕宽度存在问题
1697浏览 • 1回复 待解决
HarmonyOS 使用@Watch观察值变化问题
845浏览 • 1回复 待解决
HarmonyOS 关于状态变量深层次响应的问题
1121浏览 • 1回复 待解决
HarmonyOS @watch在同层渲染中监听变量不起作用
874浏览 • 1回复 待解决
HarmonyOS 如何监听折叠/展开状态
1061浏览 • 1回复 待解决
HarmonyOS 关于侧滑返回的监听
795浏览 • 1回复 待解决
HarmonyOS @Watch装饰器,能监听对象中某个属性的变化值吗?
1298浏览 • 1回复 待解决
HarmonyOS @Watch如何监听复杂变量的某一个属性值
808浏览 • 1回复 待解决
怎么监听蓝牙的开启状态?
5842浏览 • 1回复 待解决
HarmonyOS 扬声器开关状态如何监听
897浏览 • 1回复 待解决
HarmonyOS应用前后台状态切换事件监听
2158浏览 • 1回复 待解决
HarmonyOS 状态管理里面,目前 @watch 只能监听某一个属性,都有一个属性为 observe 装饰器装饰的class A,目前只想@watch 这个A对象下的a属性,需要怎么实现。
813浏览 • 1回复 待解决
HarmonyOS网络监听问题
1130浏览 • 1回复 待解决
HarmonyOS class添加@Observed,如何通过@Watch只监听class内某个属性的变化
978浏览 • 1回复 待解决
@Watch不支持观测嵌套对象的属性变化。