Vue 路由器嵌套路由与父级一起呈现
Vue router nested routes renders with parent
所以我尝试使用 Vue 路由器嵌套我的路由,但没有成功。
{
path: '/admin',
name: 'Admin', component: () => import('pages/Admin'),
children:[
{ path: 'stock', name: 'Stock', component: ()=> import('pages/Stock')},
]},
没有用所以我发现我需要放在父组件里面。
现在它可以工作但是如果我加载页面 /admin/stock 它会呈现两个组件。一个在其他之上。
为什么仍然显示父组件(/admin页面)?
顺便说一句,当我在没有嵌套路由的情况下做同样的事情时,它工作得非常好,组件单独呈现(下面的代码片段)。
{
path: '/admin',
name: 'Admin', component: () => import('pages/Admin'),
children:[
//no nested route
]},
{ path: 'admin/stock', name: 'Stock', component: ()=> import('../pages/Stock')},
感谢您的帮助
您应该在“Admin”组件中包含一个 router-view 标签。管理组件将作为“布局”工作,它将呈现与当前路由对应的子组件。
例如
管理组件:
<template>
<div>
<div>
Content present in all childrens
</div>
<router-view>
<div>"Admin" page content</div>
</router-view>
</div>
</template>
库存成分:
<template>
<div>
"Stock" content
</div>
</template>
当你进入/admin
它将呈现:
<div>
<div>
Content present in all childrens
</div>
<div>"Admin" page content</div>
</div>
当您访问/admin/stock
它将呈现:
<div>
<div>
Content present in all childrens
</div>
<div>"Stock" content</div>
</div>
这里有一个更好的例子
https://router.vuejs.org/guide/essentials/nested-routes.html
如果您不需要重用“Admin”组件布局,您可以使用您在第二种情况中提到的路由,而无需嵌套它们
所以我尝试使用 Vue 路由器嵌套我的路由,但没有成功。
{
path: '/admin',
name: 'Admin', component: () => import('pages/Admin'),
children:[
{ path: 'stock', name: 'Stock', component: ()=> import('pages/Stock')},
]},
没有用所以我发现我需要放在父组件里面。 现在它可以工作但是如果我加载页面 /admin/stock 它会呈现两个组件。一个在其他之上。
为什么仍然显示父组件(/admin页面)?
顺便说一句,当我在没有嵌套路由的情况下做同样的事情时,它工作得非常好,组件单独呈现(下面的代码片段)。
{
path: '/admin',
name: 'Admin', component: () => import('pages/Admin'),
children:[
//no nested route
]},
{ path: 'admin/stock', name: 'Stock', component: ()=> import('../pages/Stock')},
感谢您的帮助
您应该在“Admin”组件中包含一个 router-view 标签。管理组件将作为“布局”工作,它将呈现与当前路由对应的子组件。
例如
管理组件:
<template>
<div>
<div>
Content present in all childrens
</div>
<router-view>
<div>"Admin" page content</div>
</router-view>
</div>
</template>
库存成分:
<template>
<div>
"Stock" content
</div>
</template>
当你进入/admin 它将呈现:
<div>
<div>
Content present in all childrens
</div>
<div>"Admin" page content</div>
</div>
当您访问/admin/stock 它将呈现:
<div>
<div>
Content present in all childrens
</div>
<div>"Stock" content</div>
</div>
这里有一个更好的例子 https://router.vuejs.org/guide/essentials/nested-routes.html
如果您不需要重用“Admin”组件布局,您可以使用您在第二种情况中提到的路由,而无需嵌套它们