数据传递问题
来源:16-3 外部组件(1)
学东西要快
2018-01-04
// app.vue
<template>
<div id="app">
<v-header :seller="seller"></v-header>
<div class="tab border-1px">
<div class="tab-item">
<router-link :to='{name: "goods"}'>
商品
</router-link>
</div>
<div class="tab-item">
<router-link :to='{name: "ratings"}'>
评价
</router-link>
</div>
<div class="tab-item">
<router-link :to='{name: "seller"}'>
商家
</router-link>
</div>
</div>
<router-view></router-view>
</div>
</template>
<script>
import Header from './components/header/header';
import axios from 'axios';
const ERR_OK = 0;
export default {
data () {
return {
seller: {name: 'foo'},
goods: null,
ratings: null
};
},
created () {
axios.get('/api/seller')
.then((res) => {
if (res.data.errno === ERR_OK) {
this.seller = res.data.data;
};
});
},
components: {
'v-header': Header
}
};
</script>
// header.vue
<template>
<div class="header">
<div class="content-wrapper">
<div class="avator">
<img alt="avator" width="64" height="64">
</div>
</div>
<div class="bulletin-wrapper"></div>
</div>
</template>
<script>
export default {
props: {
seller: {
type: Object,
default () {
return {
test: 'test',
value: 0
}
}
}
},
mounted () {
console.log(this.seller);
}
};
</script>
父组件通过axios在created阶段将mock数据赋值给自身的seller,并将seller传递给子组件'v-header'。
但是在子组件'v-header'中接收到的props数据却是 父组件异步请求之前的数据
头一次遇到这个问题 自己想不出来原因
写回答
1回答
-
因为数据请求是一个异步过程,这个过程要比 Vue 整个生命周期要长的多,所以传入的是初始数据。
022018-01-04
相似问题