HarmonyOS监听组件参数变化,未变更问题
代码如下:
@Observed
export class NavigationBarButtonModel {
icon?: ResourceStr
iconSize?: Length
text?: ResourceStr
textSize?: Length
textColor?: ResourceColor
onClick?: (event?: ClickEvent) => void
tag?: string
constructor()
constructor(onClick: (event?: ClickEvent) => void)
constructor(onClick: (event?: ClickEvent) => void, icon: ResourceStr)
constructor(onClick: (event?: ClickEvent) => void, icon: ResourceStr, iconSize: Length)
constructor(onClick?: (event?: ClickEvent) => void, icon?: ResourceStr, iconSize?: Length) {
this.onClick = onClick
this.icon = icon
this.iconSize = iconSize ?? "22vp"
this.textSize = "22fp"
this.textColor = "#fff000"
}
}
@Component
struct NavigationBarButton {
@ObjectLink @Watch('onChangeModel') model: NavigationBarButtonModel
private clickEvent?: (event?: ClickEvent) => void
@Prop text: string
build() {
Row() {
if(this.model.icon) {
Image(this.model.icon)
.width(this.model.iconSize ?? "22vp")
.height(this.model.iconSize ?? "22vp")
.objectFit(ImageFit.Contain)
}else if(this.model.text) {
Text(this.model.text)
.fontSize(this.model.textSize ?? "22fp")
.fontColor(this.model.textColor ?? "22fp")
.titleStyle()
}
}
.width("46vp")
.height("46vp")
.justifyContent(FlexAlign.Center)
.onClick(this.clickEvent ?? (() => {}))
}
onChangeModel() {
if(this.clickEvent !== this.model.onClick) {
this.clickEvent = this.model.onClick
}
}
aboutToAppear() {
this.clickEvent = this.model.onClick;
}
}
引入组件NavigationBarButton({model: model});
第一次修改构造一个model,修改 icon,onclick,组件渲染,触发aboutToAppear,没触发onChangeModel,点击 button,触发 onclick 事件。
第二次修改 model,只修改model的onClick,并没有触发aboutToAppear,也没触发onChangeModel,点击 button,触发的是 onclick 第一次的事件。
在第二次只修改model的 onClick时, 如何操作,点击button触发的是第二次的 click 事件?为什么不触发onChangeModel事件?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 位置权限变更监听回调问题
1196浏览 • 1回复 待解决
HarmonyOS 如何监听组件自身尺寸变化
929浏览 • 1回复 待解决
HarmonyOS 关于监听网络变化的功能的问题
1018浏览 • 1回复 待解决
HarmonyOS UIAbility组件能否对页面变化进行监听
1288浏览 • 1回复 待解决
HarmonyOS BLE蓝牙监听设备服务变化值是characteristicValue这个参数值吗?
1200浏览 • 1回复 待解决
HarmonyOS CAPI是否支持监听组件可见区域变化事件
1522浏览 • 1回复 待解决
HarmonyOS onMemoryLevel监听内存变化
837浏览 • 1回复 待解决
HarmonyOS 网络变化监听失效
1010浏览 • 1回复 待解决
HarmonyOS 装饰器数据变化监听
777浏览 • 1回复 待解决
HarmonyOS page如何监听数据变化
1001浏览 • 1回复 待解决
HarmonyOS 音频设备变化监听
1131浏览 • 1回复 待解决
Array内容监听问题,点击某个按钮,对VM中的数组执行push操作,不会触发监听,但是变更其他值就能触发监听
1401浏览 • 1回复 待解决
HarmonyOS Web组件头部参数问题
945浏览 • 1回复 待解决
HarmonyOS 如何监听某个变量是否变化
1051浏览 • 1回复 待解决
HarmonyOS Tabs组件在滑动过程中监听TabContent位置变化
967浏览 • 1回复 待解决
HarmonyOS 如何监听系统主题变化
1121浏览 • 1回复 待解决
如何监听window大小的变化
1497浏览 • 1回复 待解决
如何监听窗口大小的变化
3673浏览 • 1回复 待解决
鸿蒙如何监听键盘高度变化
507浏览 • 1回复 待解决
HarmonyOS 如何监听到音频焦点的变化
1051浏览 • 1回复 待解决
HarmonyOS 如何监听修改系统时间的变化?
1254浏览 • 1回复 待解决
HarmonyOS 如何监听数组元素属性的变化?
1939浏览 • 1回复 待解决
HarmonyOS 如何监听text文本变化的行数?
1418浏览 • 1回复 待解决
HarmonyOS 如何监听折叠屏折叠状态变化
1492浏览 • 1回复 待解决
HarmonyOS Text组件上的bindSelectionMenu效果变更
823浏览 • 1回复 待解决
首先aboutToAppear()事件是放在build()事件之前执行的;其次,观察到代码中并没有对this.model这个对象做重新赋值,所以没有触发到onChangeModel事件。demo里面是触发NavigationBarButtonA中的onClick事件,触发NavigationBarButton中的onChangeModel事件。
在NavigationBarButton中onClick事件可做如下更改: