将道具传递到路由,而不需要URL参数



我想将数据传递到路由,而无需在路径中定义参数。我已经能够通过使用查询参数来完成数据传递,但我宁愿不在URL中显示参数。

据我在互联网和Vue路由器的文档中所知,这是可能的,但我不能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;允许任何参数通过?我不太确定,尤其是因为它正在回归;未定义的";在控制台中。

任何帮助都将不胜感激,提前感谢!

UPDATE当我将路径"/checkout"更改为名称"checkout"并在路由中指定名称时,它会起作用,但这不是很好,因为它会返回有关默认子路由的警告。

第二次更新我想我是通过在默认子路由中添加名称"checkout"来实现的。

您可以执行以下操作:

<router-view :some-value="value"/>

在您的组件中,只需定义道具:

props: ["someValue"]

请注意,道具正在传递给所有路由的组件(但只要您没有定义道具,就无法访问(。

使用path不能传递params,只能在vue路由器中使用命名路由。

最新更新