javascript - vue组件的渲染
PHP中文网
PHP中文网 2017-04-11 10:54:55
[JavaScript讨论组]

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>
<p class="header">

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

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

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

认证0级讲师

全部回复(1)
黄舟

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



你是否有用vuex来做state management?
按照我的理解,你seller数据都还没拿过来的时候,就不应该让页面呈现,或者显示一个加载中
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号