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)
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 如何监听到音频焦点的变化
525浏览 • 1回复 待解决
HarmonyOS 装饰器数据变化监听
297浏览 • 1回复 待解决
HarmonyOS State的变量无法监听到值的变化
608浏览 • 1回复 待解决
HarmonyOS 父组件的数据源监听到没变化,但是UI刷新了
244浏览 • 1回复 待解决
如何监听数组内对象属性变化
2758浏览 • 1回复 待解决
HarmonyOS @Watch装饰器,能见听到对象属性的变化吗?
688浏览 • 1回复 待解决
HarmonyOS page如何监听数据变化
508浏览 • 1回复 待解决
在系统设置修改了应用权限,应用能否监听到权限变化
2597浏览 • 1回复 待解决
HarmonyOS数据库数据变化是否可以监听
937浏览 • 1回复 待解决
HarmonyOS 如何监听到输入键盘中的完成按键
199浏览 • 1回复 待解决
HarmonyOS sdk如何监听到app的通知被点击
304浏览 • 1回复 待解决
HarmonyOS 如何监听到手机手势的返回
421浏览 • 1回复 待解决
HarmonyOS能否监听到设备翻转
687浏览 • 1回复 待解决
HarmonyOS class添加@Observed,如何通过@Watch只监听class内某个属性的变化
308浏览 • 1回复 待解决
HarmonyOS 如何监听网络错误?没有网络情况下如何监听到
390浏览 • 1回复 待解决
HarmonyOS 如何在CustomDialog内部监听到cancel事件?
356浏览 • 1回复 待解决
如何监听window大小的变化
951浏览 • 1回复 待解决
如何监听窗口大小的变化
2832浏览 • 1回复 待解决
HarmonyOS 如何监听到已经返回到当前页面
266浏览 • 1回复 待解决
HarmonyOS web组件如何监听到H5的页面跳转
457浏览 • 1回复 待解决
HarmonyOS 页面在前后台的监听,如果多个地方多次设置监听,是都能监听到状态变化还是只有最后一次生效
167浏览 • 1回复 待解决
HarmonyOS 键盘收起的事件能监听到么
509浏览 • 1回复 待解决
HarmonyOS 如何监听数组元素属性的变化?
1057浏览 • 1回复 待解决
HarmonyOS 如何监听text文本变化的行数?
836浏览 • 0回复 待解决
HarmonyOS 如何监听修改系统时间的变化?
614浏览 • 1回复 待解决
调用@Builder装饰的函数,上述写法是按值传递参数。当传递的参数为状态变量时,状态变量的改变不会引起@Builder方法内的UI刷新。所以当使用状态变量的时候,推荐使用按引用传递。参考地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
参考以下代码: