Vue嵌套路由异常:父RouterView置于插槽时子路由失效
嵌套路由在插槽中渲染时报错的解决方案
检查MainLayout的默认插槽实现
确保MainLayout组件的模板中包含<slot />标签,用于接收默认插槽内容。如果插槽被v-if/v-show等条件控制,需保证初始渲染时条件为true,否则RouterView无法被正常挂载:// MainLayout.vue <template> <div class="main-layout"> <!-- 布局头部、侧边栏等元素 --> <slot></slot> <!-- 必须存在默认插槽 --> <!-- 布局底部等元素 --> </div> </template>使用RouterView作用域插槽显式渲染组件
在ContainerMain中通过RouterView的作用域插槽获取当前路由匹配的组件,再显式渲染到MainLayout的插槽中,确保渲染上下文正确:// ContainerMain.vue <template> <MainLayout> <RouterView v-slot="{ Component }"> <component :is="Component" /> </RouterView> </MainLayout> </template>排查组件多根元素影响
尝试将ContainerMain改为单根元素结构,避免多根可能导致的渲染上下文异常:// ContainerMain.vue <template> <div class="container-main"> <MainLayout> <RouterView /> </MainLayout> </div> </template>
内容的提问来源于stack exchange,提问作者Radu
相关产品推荐
相关产品推荐

