26.父组件接口慢导致子组件渲染不成功?
方案:可以用watch监听meta,在监听里面调用接口。这样就保证父组件传过来的值一定能接收到,无论接口的快慢。
步骤一:父组件
<template>
<div>
<zi-jian :meta='meta'></zijian> //绑定参数:meta
</div>
</template>
<script>
import ZiJian from '@/components/ZiJian.vue' //引入子组件
export default {
components:{ZiJian}, //注册子组件
data() {
return {
meta:''
}
},
created() {
this.getData()
},
methods: {
//模拟父组件接口慢,1s后才出数据
getData(){
setTimeout(() => {
this.meta= 123
}, 1000);
},
}
}
</script>
步骤二:子组件
<template>
<div>
<div>姓名:{{user.name}}</div>
<div>年龄:{{user.age}}</div>
</div>
</template>
<script>
export default {
props: ['meta'], //接收参数
data() {
return {
user: {}
}
},
//由于父组件接口慢导致数据还未准备好,子组件就开始获取数据,因此获取数据失败
created() {
console.log(this.meta);
setTimeout(() => {
if (this.meta== 123) {
this.user = {
name: '小明',
age: 18
}
}
}, 500);
},
//在监听里面调用接口。当父组件数据有变动,子组件才调用方法获取数据,因此获取数据成功
watch: {
meta(val, old) {
console.log(val);
setTimeout(() => {
if (val == 123) {
this.user = {
name: '小明',
age: 18
}
}
}, 500);
}
}
}
转载请注明原文链接:https://www.cnblogs.com/chenJieLing/

浙公网安备 33010602011771号