Joa*_*ada 5 routes vue.js vue-router
所以我有一个项目页面,当我点击一个项目时,我想转到该项目的项目详细信息页面。所以我使用动态路由。我将名称(将显示在 URL 上)和 Id(我用来去我的商店并获取项目,此 Id 未显示在 URL 上)作为参数传递。一切正常,问题是当我在项目详细信息页面内加载浏览器时,我只获取名称作为参数,而我无法获取 Id,因此我无法将 Id 与我的 vuex 匹配,因为没有 Id。
这是我在父母上的路由器链接
<router-link class="project__icon" :project="project" :to="{ name: 'projectDetail', params: {name: project.name.replace(' ', ''), id: project.id} }">
Run Code Online (Sandbox Code Playgroud)
这就是我在其他页面上为在 Vuex 中获取我的项目 ID 所做的工作
const projectId = this.$route.params.id;
this.project = this.$store.getters.getProject(projectId);
Run Code Online (Sandbox Code Playgroud)
这是我点击路由器时得到的
http://localhost:8080/project/myprojectName
Run Code Online (Sandbox Code Playgroud)
在我的路由器文件中,我有这个
{
path: '/project/:name',
name: 'projectDetail',
component: ProjectDetail,
},
Run Code Online (Sandbox Code Playgroud)
我不知道为什么你要绑定project到router-link, 应该是没有必要的。
<router-link class="project__icon" :to="{ name: 'projectDetail', params: {name: project.name.replace(' ', ''), id: project.id} }">
Run Code Online (Sandbox Code Playgroud)
您需要将:id其作为参数添加到您的路线中。您可以使用 来将其标记为可选?。
{
path: '/project/:name/:id?',
name: 'projectDetail',
component: ProjectDetail,
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您设置,props: true您可以将组件与路由器解耦,并且this.$route.params.id您的详细组件将接收参数作为 props,而不是使用 。
{
path: '/project/:name/:id?',
name: 'projectDetail',
component: ProjectDetail,
props: true,
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果您想允许刷新并仍然保留 id,则必须在 url 中包含 id,否则您必须将其存储在类似localstorage或 的位置sessionstorage。
| 归档时间: |
|
| 查看次数: |
3882 次 |
| 最近记录: |