数据传递问题

来源: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>

//img.mukewang.com/szimg/5a4e1d190001827608480563.jpg

父组件通过axios在created阶段将mock数据赋值给自身的seller,并将seller传递给子组件'v-header'。

但是在子组件'v-header'中接收到的props数据却是 父组件异步请求之前的数据  

头一次遇到这个问题  自己想不出来原因

写回答

1回答

ustbhuangyi

2018-01-04

因为数据请求是一个异步过程,这个过程要比 Vue 整个生命周期要长的多,所以传入的是初始数据。

0
2
学东西要快
老师 那我要如何解决这个问题 还有你为什么没有遇到这个问题
2018-01-04
共2条回复

Vue.js2.5+cube-ui重构饿了么App(经典再升级)

掌握Vue1.0到2.0再到2.5最全版本应用与迭代,打造极致流畅的WebApp

9868 学习 · 4162 问题

查看课程