ArkTs-@Builder引用传递问题
问题场景
在page页中,定义了@State status;在实现时发现,将status传入builder,并不能触发改变时的更新。
问题定位
打日志发现,没有发生修改;通过查询资料:
@Builder装饰器:自定义构建函数 ----- 按引用传递参数
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
参数分为按引用传递参数和按值传递两种,按引用传入需要将变量命名为$$。
而status没有办法当作引用传入:
Property ‘status’ cannot initialize using ‘$’ to create a reference to a variable.
解决方案
将page整体作为引用变量传入,通过page去取需要的其他参数。
@State status: Status = Status.XXX;
DemoView({
customUI: () => {
this.poiList(this); // 此处传入page
},
...
panelStatus: this.panelStatus, // @Link,实现双向修改
...
})
@Builder
poiList(page: DemoPage) {
Column() {
List() {
ListItem() {
XxxHeader({
bean: Bean,
status: Status // 获取status
});
}
...
}
...
}
}