下面是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中最先出现的组件first
,keep-alive
标签是做缓存组件用的,搞不懂为什么?
keep-alive
“注意,<keep-alive> 是用在其一个直属的子组件被开关的情形。如果你在其中有 v-for 则不会工作。如果有上述的多个条件性的子元素,<keep-alive> 要求同时只有一个子元素被渲染。”
vue keep-alive 的源码render 方法也是第一个子组件进行了获取render getFirstComponentChild
至于为什么 尤大这样设计,可以给大大去提 issue