vue组件的渲染

export default {

data() {
  return {
   seller: {}
  };
},
created() {
  this.$http.get('/api/seller').then((response) => {
    response = response.body;
    if (response.errno === ERR_OK) {
      this.seller = response.data;
    }
  });
},
components: {
  'v-header': header
}

<v-header :seller="seller"></v-header>
上面是给组件v-header赋值





<template>
<div class="header">

   <div class="content-wrapper">
     <div class="avatar">
       <img width="64" height="64" :src="seller.avatar">
     </div>
     <div class="content">
       <div class="title">
         <span class="brand"></span>
         <span class="name">{{seller.name}}</span>
       </div>
       <div class="description">
         {{seller.description}}/{{seller.deliveryTime}}分钟送达
       </div>
       <div v-if="seller.supports" class="support">

         <span class="icon"></span>
         <span class="text">{{seller.supports[0].description}}</span>
       </div>
     </div>
   </div>
   <div class="bulletin-wrapper"></div>
</div>

上面分别渲染组件
怎么感觉像是渲染多次啊。
不写v-if="seller.supports"控制台会提示报错未定义0,我在想这个是不是渲染了多次,期间用到vue-router的组件路由
阅读 3.5k
1 个回答

created中是一个异步操作;数据还在获取中...;
然后就直接渲染了一次(这个时候seller还是{},自然"seller.supports"是未定义的)
然后等到数据拿到了,然后data变化了,又重新渲染。
我猜是这样子的



你是否有用vuex来做state management?
按照我的理解,你seller数据都还没拿过来的时候,就不应该让页面呈现,或者显示一个加载中
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题