HarmonyOS @Builde修饰器内, 如何监听到isNormalMode的数据变化
需要实现在isNormalMode发生变化时, 需要变更Image组件的图片;
目前, 如果不写Builder的话, 直接在build内写Image是可以正常修改的, 如果写到@Builder内, 就无法监听到值, 这个如果在@Builder内, 怎么可以监听到数据变化
@State isNormalMode: boolean = true;
@Builder
showImage(source: string | Resource, onImageClick: () => void = () => {}) {
Image(source)
.fitOriginalSize(true)
.objectFit(ImageFit.Auto)
.width(Constants.FULL_PARENT)
.onClick(() => {
console.log("obclick")
onImageClick();
})
.padding({ /// 内部区域显示内容
top: $r('app.float.screen_margin_left_right')
})
}
build() {
Stack({ alignContent: Alignment.TopStart }) {
Flex({ direction: FlexDirection.Column }) {
TitleBar({ model: $model })
Column() {
this.showImage(this.isNormalMode ? $r('app.media.normal_mode_selected') : $r('app.media.normal_mode_unselect'), () => {
console.log("setImageobclick")
this.isNormalMode = true;
});
this.showImage(this.isNormalMode ? $r('app.media.easy_mode_unselect') : $r('app.media.easy_mode_selected'), () => {
console.log("setImageobclick")
this.isNormalMode = false;
});
}
.padding({ /// 内部区域显示内容
left: $r('app.float.screen_margin_left_right'),
right: $r('app.float.screen_margin_left_right'),
})
.width(Constants.FULL_PARENT)
.height(Constants.FULL_PARENT)
}
}
.width(Constants.FULL_PARENT)
.height(Constants.FULL_PARENT)
}
- 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.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 如何监听到音频焦点的变化
840浏览 • 1回复 待解决
HarmonyOS 装饰器数据变化监听
585浏览 • 1回复 待解决
HarmonyOS State的变量无法监听到值的变化
986浏览 • 1回复 待解决
HarmonyOS 父组件的数据源监听到没变化,但是UI刷新了
562浏览 • 1回复 待解决
如何监听数组内对象属性变化
3144浏览 • 1回复 待解决
HarmonyOS @Watch装饰器,能见听到对象属性的变化吗?
943浏览 • 1回复 待解决
HarmonyOS page如何监听数据变化
833浏览 • 1回复 待解决
在系统设置修改了应用权限,应用能否监听到权限变化
3029浏览 • 1回复 待解决
HarmonyOS数据库数据变化是否可以监听
1320浏览 • 1回复 待解决
HarmonyOS class添加@Observed,如何通过@Watch只监听class内某个属性的变化
658浏览 • 1回复 待解决
HarmonyOS 如何监听到输入键盘中的完成按键
479浏览 • 1回复 待解决
HarmonyOS 如何监听到手机手势的返回
762浏览 • 1回复 待解决
HarmonyOS sdk如何监听到app的通知被点击
616浏览 • 1回复 待解决
HarmonyOS能否监听到设备翻转
951浏览 • 1回复 待解决
HarmonyOS 如何监听网络错误?没有网络情况下如何监听到
836浏览 • 1回复 待解决
HarmonyOS 如何在CustomDialog内部监听到cancel事件?
580浏览 • 1回复 待解决
HarmonyOS 页面在前后台的监听,如果多个地方多次设置监听,是都能监听到状态变化还是只有最后一次生效
436浏览 • 1回复 待解决
HarmonyOS 键盘收起的事件能监听到么
836浏览 • 1回复 待解决
如何监听window大小的变化
1288浏览 • 1回复 待解决
如何监听窗口大小的变化
3283浏览 • 1回复 待解决
HarmonyOS 如何监听到已经返回到当前页面
592浏览 • 1回复 待解决
HarmonyOS web组件如何监听到H5的页面跳转
831浏览 • 1回复 待解决
HarmonyOS 如何监听修改系统时间的变化?
999浏览 • 1回复 待解决
HarmonyOS 如何监听text文本变化的行数?
1172浏览 • 0回复 待解决
HarmonyOS 如何监听数组元素属性的变化?
1578浏览 • 1回复 待解决
调用@Builder装饰的函数,上述写法是按值传递参数。当传递的参数为状态变量时,状态变量的改变不会引起@Builder方法内的UI刷新。所以当使用状态变量的时候,推荐使用按引用传递。参考地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
参考以下代码: