HarmonyOS使用@Objectlink和 @watchs 如何只监听对象一个属性的变化

@Component 
export struct TestView{ 
  @ObjectLink @Watch("updateViewModel") viewModel:PlayFlowViewModel 
  updateViewModel(){ 
    console.log("TestView updateViewModel") 
  } 
} 
@Observer 
export class PlayFlowViewModel{ 
  playBaseData:PlayBaseData | null = null 
  option: Options = new Options() 
  datasource:DataSource = new DataSource() 
  playEvent:ReceiverEvent = {event:0,bundle:null} 
}

场景是视频播放场景,包含播放器的组件里面,需要响应外界的播放器控制消息,例如暂停,Seek等消息。目前设计的方案是想把这些消息和一些播放数据 都统一放到一个model里面便于管理。但是现在发现PlayFlowViewModel中,只要一个属性更新,整个viewmodel的watchs函数都会被触发。目前想只监听一个属性的变化,不知道有没有好的方案。

HarmonyOS
2024-08-03 11:23:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
快乐小肥仔

使用@Watch监听的对象,只能监听一层数据变化,多层次数据变更无法监听,同@State状态管理机制一致,规避方式为把整体更换数据源改为更新item中的属性值,然后用@ObjectLink和@Observed来监听item的变化。参考以下链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5

分享
微博
QQ
微信
回复
2024-08-03 17:16:20
相关问题
如何监听数组内对象属性变化
2347浏览 • 1回复 待解决
如何实现一个监听网络变化方法
627浏览 • 1回复 待解决
如何定义一个未知类型对象
876浏览 • 2回复 待解决
PersistentStorage如何持久化一个对象?
2810浏览 • 1回复 待解决