vue递归实现动态路由
在Vue中实现动态路由可以使用递归的方式,具体步骤如下:
- 在路由配置文件中定义一个动态路由,例如:
{
path: '/:id',
name: 'dynamic',
component: Dynamic,
props: true
}
- 在组件中通过$route.params.id获取当前路由的参数值,然后根据该值进行判断和处理,例如:
<template>
<div>
<h2>动态路由</h2>
<div v-if="id === '1'">
<p>这是第一个动态路由页面</p>
</div>
<div v-else-if="id === '2'">
<p>这是第二个动态路由页面</p>
</div>
<div v-else>
<p>未知的动态路由页面</p>
</div>
</div>
</template>
<script>
export default {
name: 'Dynamic',
props: ['id']
}
</script>
- 如果需要在动态路由中嵌套子路由,则可以使用递归的方式。在父组件中使用
来渲染子路由,然后在子组件中再次使用 来渲染嵌套的子路由,例如:
{
path: '/:id',
name: 'dynamic',
component: Dynamic,
props: true,
children: [
{
path: 'child',
name: 'child',
component: Child,
props: true,
children: [
{
path: 'grandchild',
name: 'grandchild',
component: Grandchild,
props: true
}
]
}
]
}
- 在父组件Dynamic中使用
来渲染子路由Child,然后在子组件Child中再次使用 来渲染嵌套的子路由Grandchild,例如:
<template>
<div>
<h2>动态路由</h2>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'Dynamic',
props: ['id']
}
</script>
<template>
<div>
<h3>子路由</h3>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'Child',
props: ['id']
}
</script>
<template>
<div>
<h4>嵌套子路由</h4>
<p>当前路由参数为:{{ id }}</p>
</div>
</template>
<script>
export default {
name: 'Grandchild',
props: ['id']
}
</script>
原文地址: https://www.cveoy.top/t/topic/baKx 著作权归作者所有。请勿转载和采集!