HarmonyOS 父子组件传值问题

父组件有个变量:

@State agendaData :Agenda = new Agenda();
  • 1.

原本是三个文件,在后台上传一个新文件,调用接口获取之后传递给子组件:

agenda({ agendaData: this.agendaData })
  • 1.

子组件中接收此变量:

@Prop @Watch('agendaDataChange')  agendaData: Agenda;
// @Watch 回调
agendaDataChange(propName: string): void {
  let lines = this.getLines()
  this.isVisibility = lines > 2
  //此处回调打印的是正常数据,四个文件
  console.log('触发Watch回调',JSON.stringify(this.agendaData))
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

子组件中对于此变量的运用:

ForEach(this.agendaData.pdfList,
  (item:Profile,index)=>{
    this.fileAndVideoItem(1,item,this.agendaData.pdfList)
  })

@Builder fileAndVideoItem(type:number,file?: Profile, list?: Array<Profile>) {
  // type 1文件 2视频
  Text(file?.fileName)
    .fontSize(24)
    .fontColor('#0084FF')
    .decoration({type:TextDecorationType.Underline,color:'#0084FF'})
    .onClick(() => {
      //此处打印的list只有三个文件,this.agendaData打印出的有四个文件
      console.log('跳转页面时获取的list',JSON.stringify(list))
      console.log('跳转页面时获取的list2',JSON.stringify(this.agendaData))
      if(type===1){
        router.pushUrl({
          url: 'pages/PDFPreview',
          params:{
            file:JSON.stringify(file),
            list:JSON.stringify(this.agendaData.pdfList),
            from:'agenda'
          }
        },router.RouterMode.Single)
      }else if(type===2) {
        if(file?.fileType === "video/link") {
          const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
          startBrows(context, file.filePath);
        } else {
          router.pushUrl({
            url: 'pages/video',
            params: {
              file: JSON.stringify(file),
              list: JSON.stringify(list),
              from: 'agenda'
            }
          })
        }
      }
    })
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
HarmonyOS
2025-01-09 13:43:25
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

可使用@Link在builder构造器中监听数据变化,链接参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-link-V5

分享
微博
QQ
微信
回复
2025-01-09 16:23:25
相关问题
arkts父子组件组件怎么通信啊?
6563浏览 • 1回复 待解决
ArkTS自定义组件如何父子
1386浏览 • 1回复 待解决
OpenHarmony 使用WEB组件问题
4548浏览 • 1回复 待解决
HarmonyOS 父子组件之间的参传递数组
1143浏览 • 1回复 待解决
HarmonyOS Component问题
618浏览 • 2回复 待解决
HarmonyOS 父子组件状态问题
661浏览 • 1回复 待解决
HarmonyOS 页面反向怎么
857浏览 • 1回复 待解决
HarmonyOS 页面
834浏览 • 1回复 待解决
HarmonyOS 界面逆向
1140浏览 • 1回复 待解决
HarmonyOS Checkbox如何动态
654浏览 • 1回复 待解决
自定义组件和绑定
1679浏览 • 1回复 待解决
HarmonyOS 父子组件滑动冲突
756浏览 • 1回复 待解决
HarmonyOS AKI是否支持引用
700浏览 • 1回复 待解决
HarmonyOS原生如何给flutter
1091浏览 • 1回复 待解决
HarmonyOS navigation页面之间回
821浏览 • 1回复 待解决
HarmonyOS 如何实现页面反向
1122浏览 • 1回复 待解决
HarmonyOS PixelMap如何实现父子组件同步
769浏览 • 1回复 待解决