[英]Vue Router passing props to dynamic routes, unclear documentation
我有一个ProjectCard
组件,除其他外,它链接到特定的ProjectPage
组件。 ProjectPage 将有一堆不同的段落、图片等,与我的问题不完全相关。
如何将道具传递给ProjectPage
? Boolean 模式上的Vue Docs部分非常模糊,并没有真正告诉我任何有用的信息。
我的路由器index.js
文件具有他们在文档中提到的道具解耦
import ProjectPage from "@/views/ProjectPage.vue"
const routes = [
{
path: "projects/:id",
component: ProjectPage,
props: true
}
为了进行测试,我使ProjectPage.vue
组件看起来像这样
<template>
<div>Static text, followed by {{ testString }}</div>
</template>
<script>
export default {
name: "ProjectPage",
props: {
testString: String
}
};
</script>
我尝试从我的ProjectCard
组件向它传递一个测试字符串,如下所示:
<template>
<router-link class="project-link" :to="{ path: `projects/${url}`, params: { testString: 'a dynamic string' } }" exact>
</template>
<script>
export default {
name: "ProjectCard",
props: {
url: String
}
};
</script>
这将正确地将我带到指定的路线,例如projects/table
。 但是, {{ testString }}
没有呈现,我只能看到Static text, followed by a
一部分。 控制台中没有错误或警告。
在 Vue 调试器中检查ProjectCard
组件, testString
存在嵌套在to/params/testString
下:
但是,在任何ProjectPage
组件上, undefined
testString
我在这里做错了什么?
那这个呢
import ProjectPage from "@/views/ProjectPage.vue"
const routes = [
{
name: 'Project',
path: "projects/:id",
component: ProjectPage,
props: true
}
和
<template>
<router-link class="project-link" :to="{ name: `Project`, params: { testString: 'a dynamic string' ,id: url} }" exact>
</template>
正如文档所说
如果提供了路径,则忽略 params,这不是查询的情况,如上面的示例所示。
const userId = '123'
router.push({ name: 'user', params: { userId } }) // -> /user/123
router.push({ path: `/user/${userId}` }) // -> /user/123
// This will NOT work
router.push({ path: '/user', params: { userId } }) // -> /user
相同的规则适用于
router-link
组件的to
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.