无需 URL 参数即可将道具传递给路线
Pass props to a route without needing URL params
我想将数据传递到路由而不需要在路径中定义参数。我已经能够通过使用查询参数来完成传递数据,但我不想在 URL.
中显示参数
据我在 Vue-Router 的互联网和文档中找到的,这是可能的,但我不是 100% 确定如何实现它。因此,我很乐意得到一些帮助。
为了给你一个简短的想法,这是我正在使用的代码:
Cart.vue,我要推送路由器的文件:
this.$router.push({ path: '/checkout', params: {nextUrl: this.$route.fullPath, pid: this.$route.query.pid, quantity: this.quantity }}).catch(() => {});
Checkout.vue,这里我想取回参数,现在我只是用console.log,我也放下了道具(显然console.log是在一个生命周期内钩子):
props : ['pid', 'quantity']
console.log(this.$route.params.pid);
console.log(this.$route.params.quantity);
最后,这是我的路线:
{
path: '/checkout',
component: Checkout,
children: [
{
// path: '',
// component: Personal,
// }, later afrekenen als gast toevoegen
path: '',
component: Address,
},
{
path: '/checkout/payment',
component: Payment,
},
{
path: '/checkout/confirm',
component: OrderCheck,
}
],
meta: {
requiresAuth: true,
},
props: true
},
根据我的阅读,您可以简单地添加“props: true”以允许任何参数通过?我不太确定,尤其是因为它在控制台中返回“未定义”。
任何帮助将不胜感激,提前致谢!
更新
当我将路径:'/checkout' 更改为名称:'checkout' 并在路由中指定名称时它起作用,但这不是最佳选择,因为它返回有关默认子路由的警告。
第二次更新
我想我通过将名称 'checkout' 添加到默认子路由来使其工作。
您可以像下面这样:
<router-view :some-value="value"/>
在你的组件中定义道具:
props: ["someValue"]
请注意,prop 正在传递给所有路由组件,(但只要您不定义 prop 就无法访问)。
我想将数据传递到路由而不需要在路径中定义参数。我已经能够通过使用查询参数来完成传递数据,但我不想在 URL.
中显示参数据我在 Vue-Router 的互联网和文档中找到的,这是可能的,但我不是 100% 确定如何实现它。因此,我很乐意得到一些帮助。
为了给你一个简短的想法,这是我正在使用的代码:
Cart.vue,我要推送路由器的文件:
this.$router.push({ path: '/checkout', params: {nextUrl: this.$route.fullPath, pid: this.$route.query.pid, quantity: this.quantity }}).catch(() => {});
Checkout.vue,这里我想取回参数,现在我只是用console.log,我也放下了道具(显然console.log是在一个生命周期内钩子):
props : ['pid', 'quantity']
console.log(this.$route.params.pid);
console.log(this.$route.params.quantity);
最后,这是我的路线:
{
path: '/checkout',
component: Checkout,
children: [
{
// path: '',
// component: Personal,
// }, later afrekenen als gast toevoegen
path: '',
component: Address,
},
{
path: '/checkout/payment',
component: Payment,
},
{
path: '/checkout/confirm',
component: OrderCheck,
}
],
meta: {
requiresAuth: true,
},
props: true
},
根据我的阅读,您可以简单地添加“props: true”以允许任何参数通过?我不太确定,尤其是因为它在控制台中返回“未定义”。
任何帮助将不胜感激,提前致谢!
更新 当我将路径:'/checkout' 更改为名称:'checkout' 并在路由中指定名称时它起作用,但这不是最佳选择,因为它返回有关默认子路由的警告。
第二次更新 我想我通过将名称 'checkout' 添加到默认子路由来使其工作。
您可以像下面这样:
<router-view :some-value="value"/>
在你的组件中定义道具:
props: ["someValue"]
请注意,prop 正在传递给所有路由组件,(但只要您不定义 prop 就无法访问)。