鍍金池/ 問答/HTML/ vue-router中keep-alive標(biāo)簽下只能顯示首個(gè)視圖組件

vue-router中keep-alive標(biāo)簽下只能顯示首個(gè)視圖組件

下面是VueRouter定義時(shí)的部分:

 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中最先出現(xiàn)的組件first,keep-alive標(biāo)簽是做緩存組件用的,搞不懂為什么?

回答
編輯回答
爛人

keep-alive
“注意,<keep-alive> 是用在其一個(gè)直屬的子組件被開關(guān)的情形。如果你在其中有 v-for 則不會(huì)工作。如果有上述的多個(gè)條件性的子元素,<keep-alive> 要求同時(shí)只有一個(gè)子元素被渲染?!?/p>

vue keep-alive 的源碼render 方法也是第一個(gè)子組件進(jìn)行了獲取render getFirstComponentChild

clipboard.png

至于為什么 尤大這樣設(shè)計(jì),可以給大大去提 issue

2017年1月7日 10:47