在HarmonyOS NEXT开发中LazyForEach不会更新@State里的值?

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

阅读 902
1 个回答

箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。this指向ViewModel,不是被装饰器@State代理的状态变量
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...使用箭头函数改变状态变量未生效
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%") 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进