HarmonyOS LazyForEach不会更新@State里的值

有一个需求,就是有一个列表需要展示,而这个列表是在运行的过程中用户可能修改参数,然后需要重新请求网络刷新列表内容,目前将列表封装在一个自定义组件NewsList里面,而NewsList有一个变量@Prop newsModel: BaseMvvmViewModel<BaseViewModel> ,父组件会设置这个值,但是运行过程中发现,父组件传递到NewsList后,这个值被拷贝了,请问有办法向的自定义组件传引用么?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。this指向ViewModel,不是被装饰器@State代理的状态变量

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-state-V5#使用箭头函数改变状态变量未生效

index.ts

import { ViewModel } from './ViewModel';

@Entry
@Component
struct Index {

  @State vm: ViewModel = new ViewModel()

  build() {
    Column() {

      Text("点击我刷新数据")
        .onClick(()=>{
          console.log('66666666666666666')
          // this.newsModel.refresh()
          let self = this.vm
          this.vm.refresh(self)
        })

      List() {
        LazyForEach(this.vm as IDataSource, (item: string) => {
          ListItem() {
            Text(item)
              .fontSize(18)
              .width(300)
              .alignSelf(ItemAlign.Center)
              .height(50)
          }.width("100%")

        }, (item: string, index?: number) => JSON.stringify(item) + index)

      }

    }.width("100%")
    .height("100%")
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 提出来组件数据不会更新
410浏览 • 1回复 待解决
HarmonyOS LazyForEach
340浏览 • 1回复 待解决
HarmonyOS @ObjectLink和@State相关疑问
263浏览 • 1回复 待解决
HarmonyOS swiper + LazyForEach使用问题
313浏览 • 1回复 待解决