HarmonyOS 鸿蒙Next 通过WrappedBuilder.builder创建的Component不能更新Component 是否WrappedBuilder.builder不支持更新

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 通过WrappedBuilder.builder创建的Component不能更新Component 是否WrappedBuilder.builder不支持更新

通过WrappedBuilder.builder在创建一个component,能执行首次builder,然后更新父组件state,不能再次触发builder,通过builder创建的组件不更新。

build() {

Column() {

if (this.dxItemRenderService && this.section && this.templateItem) {

Text(this.section?.template?.name)

this.dxItemRenderService?.getDxWrappedBuilder().builder(this.section)

Text(this.section?.template?.name)

} else {

Text(‘not found’ + this.templateItem?.name);

}

}

.width(‘100%’)

.opacity(this.searchBarHasRender())

.onAreaChange(this.searchBarAreaChange.bind(this))

}

2 回复
class Selects {
template?: Template;
}

[@ObservedV2](/user/ObservedV2)
class Template {
[@Trace](/user/Trace) name?: string
}

[@Builder](/user/Builder)
function overBuilder(select: Selects) {
Column() {
Text(`wrapBuildervalue:${select.template!.name}`)
}
}

const wBuilder: WrappedBuilder<[Selects]> = wrapBuilder(overBuilder);

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Parent {
[@Prop](/user/Prop) select: Selects = new Selects();

aboutToAppear(): void {
let tem = new Template();
tem.name = '123'
this.select.template = tem
}

build() {
Column() {
wBuilder.builder({ template: this.select.template })
Text(this.select!.template!.name)
Button('Click me').onClick(() => {
console.log('111')
this.select!.template!.name = 'ArkUI';
})
}
}
}

使用这个代码试下,我这边测试,可以刷线WrappedBuilder里面数据,不过使用的V2装饰器注解

在HarmonyOS鸿蒙系统中,WrappedBuilder.builder 是一种常用的构建器模式,用于简化组件(Component)的创建过程。通常情况下,通过 WrappedBuilder.builder 创建的组件应当支持正常的更新机制,因为构建器本身只是提供了一种便捷的构造方式,而不应影响组件的基本功能,包括更新。

如果遇到通过 WrappedBuilder.builder 创建的 Component 无法更新的情况,可能的原因包括但不限于:

  1. 组件本身的设计问题:检查组件的更新逻辑是否正确实现,包括状态管理、数据绑定等。
  2. 父组件或容器的限制:确认父组件或容器是否允许子组件更新。
  3. 系统或框架的bug:确认是否使用了最新版本的HarmonyOS SDK,以及是否存在已知的框架bug。

解决这类问题通常需要具体分析代码和上下文环境。如果确认代码逻辑无误且使用了正确的SDK版本,而问题依旧存在,那么可能是系统或框架层面的问题。此时,建议直接联系官方客服或查阅官方文档以获取更专业的帮助。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部