vue中父传子,子组件页面里面有数据,console.log打印出来为空

通过prop向子组件传值,使用该方法时,在我的项目中,得到的数据为空。我的代码如下

1、父组件引用子组件,filelookIds是通过axios请求向后台获取的数据

<file-list-look :fileLookId="filelookIds" />

2、子组件通过props接收 ,在methods方法里面,打印console.log(this.fileLookId)为空,而在页面里面插入 {{fileLookId}}时就有数据

 props:{
   fileLookId:{
     type:String,
     default:''
   }
  },


created(){
     this.getFileList()
   },
  methods:{
    // 获取文件对象
    getFileList(){
      let param = {
        cnsIds:this.fileLookId
      }
      console.log(this.fileLookId)  //打印为空
      this.$api.commons.getFileInfoByIds(param).then(res => {
        if(res && res.data && res.data.code == '0'){
          this.filesList = res.data.data;
        }
      }
      ).catch(error => {})
    },
}

 回想着看其他父传子这样做并没有什么问题,单这个就为空。后面想想是否是因为要传的数据是后端请求过来的原因,需要实时监控它才行。所以在子组件加入watch监听fileLookId值,并把created里面的方法写在watch里面

watch: {
     'fileLookId': function () {
      this.getFileList()
     }
    },

父组件通过 props 向子组件传递异步数据时,在父实例完成模板编译之后,异步数据数据还未到达,这时子组件获取到的数据就为空

方法: 

数据到达后再传递:即等父组件确认从后端获取到数据之后再通过 prop 传递给子组件,在子组件上写v-if="filelookIds!= null"

监听父组件改变的 prop:在子组件中定义 watch 属性监听父组件通过 prop 传递数据的变化情况

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~犇犇~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值