HarmonyOS 鸿蒙Next:父组件传递给子自定义组件IDataSource,但子组件LazyForEach不响应父组件数据更新

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

HarmonyOS 鸿蒙Next:父组件传递给子自定义组件IDataSource,但子组件LazyForEach不响应父组件数据更新

我们有一个需求,就是有一个列表需要展示,而这个列表是在运行的过程中用户可能修改参数,然后需要重新请求网络刷新列表内容,目前我们将列表封装在一个自定义组件NewsList里面,而NewsList有一个变量@Prop newsModel: BaseMvvmViewModel<BaseViewModel> ,父组件会设置这个值,但是运行过程中发现,父组件传递到NewsList后,这个值被拷贝了,请问有办法向的自定义组件传引用么(我知道有全局@Builder方法可以,但是使用起来不方便,我希望做成一个独立的自定义组件)?demo工程已经附上,哪位大神有没有空麻烦帮忙看看有办法没有。谢谢了先。

8 回复

@Prop会进行深拷贝,试试@Link,看行不行

谢谢您的回复,很奇怪,使用ForEach没有问题,正常收到,所以我觉得这里是LazyForEach的bug。

在刷不了的情况下可以试一下:
this.data = JSON.parse(JSON.stringify(this.data))

LazyForEach是走listener方式的。

框架问题,单独刷新UI并没有更新。

对象数组的更新,需要修改替换整个对象

LazyForEach是走listener方式的。

在HarmonyOS开发中,如果你发现子组件的LazyForEach不响应父组件传递的IDataSource数据更新,这通常是因为数据源更新后没有正确触发子组件的刷新机制。请确保以下几点:

  1. 父组件在更新IDataSource后,应该使用状态管理(如Observable或State等)来确保子组件能够感知到变化。
  2. 检查LazyForEachitems属性是否绑定到了可观察的数据源上。
  3. 确保子组件的LazyForEach没有使用到任何缓存逻辑,这可能阻止其响应新的数据。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部