智能客服
你问我答,随时在线为你解决问题

























场景一:嵌套对象或者对象数组的属性发生改变时,如何实现UI刷新?
场景二:@ObjectLink修改嵌套对象属性后List不刷新。
ArkUI中@Link装饰器是用于父子组件中的变量双向同步的。子组件通过@Link接收父组件传递的状态变量,当父组件/子组件任意一方发生改变时都会引起另一个同步变化。当装饰的是基本数据类型或者简单对象这类能直接被ArkUI框架观察到的就能触发页面实时渲染。对于复杂对象只能同步值的变化,无法触发UI渲染刷新。
@Observed装饰器和@ObjectLink装饰器用于实现嵌套对象或数组的双向数据同步。@ObjectLink接收的变量必须是@Observed装饰的类的实例,@ObjectLink仅能观察其直接绑定的对象属性变化,无法自动穿透到更深层的嵌套对象属性。
场景一:
@Link装饰器只监听对象本身的地址以及第一层属性的地址变化。当装饰的对象为复杂类型,如对象数组时,其属性的变化不会让UI刷新。可以通过浅拷贝覆盖原来的值达到刷新UI的效果,但会导致不必要的渲染,不建议使用。
对于复杂对象的监听可以使用@Observed装饰器和@ObjectLink装饰器、@ObservedV2装饰器和@Trace装饰器、@Monitor装饰器,能观察到对象内部的其他对象发生改变,以实现刷新UI的功能。
场景二:
@ObjectLink修改嵌套对象属性后List不刷新,通常由以下几种情况导致:
更多定位方法可参考状态变量改变不触发组件刷新问题常用定位方法。
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功