数据传递问题
来源: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
相似问题