vue中父子组件先后渲染_vue父子组件的渲染问题

在仿写网易云音乐项目时遇到Vue父子组件数据传递问题,子组件在父组件数据异步获取前初始化,导致接收到的url为undefined。解决方法是在父组件中等待所有异步请求完成后再将数据传递给子组件,确保子组件能正确接收到url。通过调整父组件的`init`方法,确保`Urldata`在子组件初始化之前已赋值。
摘要由CSDN通过智能技术生成

今天自己在仿写网易云音乐的项目时,遇到一个问题,在使用一个播放的组件的时候,需要把父组件的url 传递到子组件使用,但是子组件获取到的url一直是undefined.

问题分析:

1.数据获取是异步请求

2.父子组件传值也是异步的

直观一点直接看代码:

template:

//父组件

//子组件先与数据回来执行,所以拿到的url是undefined

//

//解决方式

js:

data () {

return {

simidata:[],

detaildata:{},

brs:{},

Urldata:{}

}

},

created () {

this.init();

},

methods: {

async init(){

let mvid = this.$route.params.id

//获取相似的mv

let {data} = await this.$request.Getsimimv({mvid})

//获取mv 的详情

let backdata = await this.$request.Getmvdetail({mvid});

//获取mv的url

let urldata = await this.$request.Getmvurl({id:mvid})

this.simidata = data.mvs

this.detaildata = backdata.data.data

this.brs = backdata.data.data.brs

this.Urldata = urldata.data.data

console.log(this.Urldata.url); //url

}

}

子组件

import Player from "xgplayer";

export default {

props: ["url"],

mounted() {

this.initplay()

},

created () {

console.log(this.url); //undefined

},

methods() {

initplay(){

......

}

},

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值