vue-router中keep-alive标签下只能显示首个视图组件

下面是VueRouter定义时的部分:

 path:'/second/goto',              
 components :{
    default:first,
    aview:goto,
    bview:goto2
}

下面是包含路径/second/goto的组件:

<router-link to="/second/goto">goto</router-link>                    
<!--<keep-alive>-->
        <router-view   class="view default-view" :seller="seller"></router-view>
        <router-view  class="view a-view" name="aview"></router-view>
        <router-view  class="view b-view" name="bview"></router-view>
   <!-- </keep-alive>-->
</div>

但是若给router-view外面包裹keep-alive便签的话,则只能显示components中最先出现的组件firstkeep-alive标签是做缓存组件用的,搞不懂为什么?

阅读 3k
1 个回答

keep-alive
“注意,<keep-alive> 是用在其一个直属的子组件被开关的情形。如果你在其中有 v-for 则不会工作。如果有上述的多个条件性的子元素,<keep-alive> 要求同时只有一个子元素被渲染。”

vue keep-alive 的源码render 方法也是第一个子组件进行了获取render getFirstComponentChild

clipboard.png

至于为什么 尤大这样设计,可以给大大去提 issue

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进