在我的情况下,我使用了重定向名称,但不能接收自定义参数,因为目标路由有一个按路径重定向,在这种情况下提供的参数被丢失。
因此,需要从“路径重定向”更改为“命名重定向”,但由于“路径重定向”在路径中包含其他数据,现在也需要使用params通过“命名重定向”传递这些数据。
所以,最终我有了一个助手函数“redirectByName”,在这种情况下保留了params。
redirectByName.js
export default (name, params = {}) => {
return (route) => ({
...route,
name,
params: {
...route.params,
...params
}
})
}
这里是如何使用它的示例:
myRoutes.js
import redirectByName from "./redirectByName";
...
export default return [
{
path:'some/path',
name: 'targetRouteName',
redirect:redirectByName('redirectRouteName', {tab: 'general'}),
},
{
path:'some/path/:tab',
name: 'redirectRouteName'
}]
redirectByName
基本上会采用目标route
对象来保留所有传递的数据,将其name
参数覆盖为提供的名称并合并参数。然后它会将最终路由对象传回以完成重定向。
meta
而不是moreData
? - Ayush Gupta.push({meta: {foo: 1}})
,但在转换后$route.meta
为空对象({}
)。 - Slim