vuejs2 - 使用 vue 路由的最佳方式是什么?
问题描述
我对 Vue 路线有点陌生。我有一张桌子Home.vue
,每一行都有一个按钮,以便转到详细信息。我会试着解释我的想象。我希望重定向打开一个Overview
带有侧边栏的新屏幕,其中包含 3 个选项Overview
:Commits
和Files
. 我的问题是要了解什么应该是父母,什么应该是孩子。我确定Commits
andFiles
是孩子,但Overview
也应该是孩子或Commits
and的父母Files
?重定向到详细信息的行:
<router-link :to="{ 'name': 'details', 'params': { 'tool': tool } }">{{id}}</router-link>
我目前拥有的路线:
const DetailsChildren = [
{
path: 'commits/:tool',
name: 'commits',
component: commits
},
{
path: 'files/:tool',
name: 'files',
component: files
}
];
export default new Router({
routes: [
{
path: '/',
name: 'home',
component: Home
}
{
path: '/overview/:tool',
name: 'details',
component: details,
children: DetailsChildren
}
],
mode: 'history'
});
DetailsChildren
如下:
<template>
<div class="main">
<sidebar />
<router-view />
</div>
</template>
目前DetailsChildren
是Overview
. 但我认为DetailsChildren
应该是 的父级Overview
,Files
然后Commits
我需要创建另一个组件Overview
。但是我有两个问题。Overview
第一个是当我从桌子移动到时如何加载DetailsChildren
?第二个是我希望路线是/overview/:tool
. 我有点困惑。在这种情况下处理路线的最佳方法是什么?
解决方案
您想要做的是在您的details
路线下有三个孩子,每个孩子都有自己的绝对路径/
。
const DetailsChildren = [
{
path: '/overview/:tool',
name: 'overview',
component: overview
},
{
path: '/commits/:tool',
name: 'commits',
component: commits
},
{
path: '/files/:tool',
name: 'files',
component: files
}
];
这将创建以下路径映射
/overview/:tool
- 顶级组件:
details
- 子组件:
overview
- 顶级组件:
/commits/:tool
- 顶级组件:
details
- 子组件:
commits
- 顶级组件:
/files/:tool
- 顶级组件:
details
- 子组件:
files
- 顶级组件:
请参阅嵌套路由指南。
您可能认为您可以为概览路径使用空路径,但这将要求 URL 有一个尾部斜杠(即/overview/tool/
),我认为您不希望这样。
还建议从您的details路由中删除名称,而是链接到默认子路由(即overview)。例如
<router-link :to="{ name: 'overview', params: { tool } }">{{id}}</router-link>
否则,路由器会混淆显示哪个,父(空)或子。
您的侧边栏链接可以简单地使用子路由名称来创建它们的链接,例如
<nav>
<ul>
<li>
<router-link :to="{name: 'overview'}">Overview</router-link>
</li>
<li>
<router-link :to="{name: 'commits'}">Commits</router-link>
</li>
<li>
<router-link :to="{name: 'files'}">Files</router-link>
</li>
</ul>
</nav>
推荐阅读
- regex - 带有 javax @Pattern 的正则表达式
- php - PHP array_unshift 在函数中不起作用
- java - 如何在不知道值的情况下选择硒中的复选框
- r - *平台无关*语言/区域设置?
- c - Oracle 11g:osutil 包;CentOS 7 上没有路径?
- user-interface - 如何在列中的小部件之间有负空间?
- html - 具有多级属性的 CallByName
- oracle - 我拥有的存储过程运行速度非常慢/永远不会完成。有一个更好的方法吗?
- spring-boot - spring boot 客户端应用程序与hashicorp vault 支持的pcf 配置服务器的交互?
- python-3.x - pyspark 中的 df.show() 问题