在使用@Link进行双向绑定时,若涉及复杂对象(如包含多层嵌套属性的对象),在鸿蒙单向数据流机制下,如何

在使用@Link进行双向绑定时,若涉及复杂对象(如包含多层嵌套属性的对象),在鸿蒙单向数据流机制下,如何确保数据更新能正确同步且不引发性能问题?

鸿蒙
2025-07-16 14:05:24
浏览
收藏 0
回答 1
已解决
回答 1
按赞同
/
按时间
全栈若城

使用不可变数据模式

// 不要直接修改嵌套属性
// 错误示例
@Component
struct ChildComponent {
  @Link complexObj: ComplexObject;
  
  build() {
    Button('修改')
      .onClick(() => {
        // 直接修改嵌套属性,可能不会触发UI更新
        this.complexObj.nestedObj.property = newValue;
      })
  }
}

// 正确示例
@Component
struct ChildComponent {
  @Link complexObj: ComplexObject;
  
  build() {
    Button('修改')
      .onClick(() => {
        // 创建新对象,保持不可变性
        this.complexObj = {
          ...this.complexObj,
          nestedObj: {
            ...this.complexObj.nestedObj,
            property: newValue
          }
        };
      })
  }
}

 

分享
微博
QQ
微信
回复
2025-07-17 09:38:29
相关问题
HarmonyOS 如何解压数据流
1291浏览 • 1回复 待解决
使用http模块实现数据流请求
2375浏览 • 1回复 待解决
ArkTS对象绑定C++对象如何回收?
1927浏览 • 1回复 待解决