【鸿蒙Next】ObserverV2更改属性后UI不刷新问题排查

357 阅读1分钟

如果ObserverV2更改属性后不生效,debug先看一下对象中被@Trace修饰的字段是否有__ob__xxx前缀

如果没有,那对这个对象的属性进行操作UI是不会刷新的。

这时可以检查看看这个对象是否是new 出来的,目前鸿蒙通过{}创建对象,属性字段是不会被代理的(就是不会增加__ob__前缀),即使在类里标注了@Trace也不会刷新。

如果确实有通过{}创建的对象从其他地方(如三方库)传入,可以通过执行一次深copy解决此问题

示例代码

```

export function deepCloneAddressItem(source: AddressItem) {  const res = new AddressItem()  res.id = source.id  res.consignee = source.consignee  res.consigneePhone1 = source.consigneePhone1  return res}```