我正在用react-router编写重定向规则。定义我的路线如下:
{
path: '/inputs',
component: InputsContainer,
label: 'Inputs',
icon: 'fal fa-mobile',
menu: false,
routes: [
{
path: '/inputs',
component: () => <Redirect to="/om/inputs" />,
index: true,
exact: true
},
{
path: '/inputs/:id',
component: (location) => <Redirect exact from="/inputs/:id" to={`/om/orders/:id`} />,
label: "Order Details",
menu: false
},
notFoundRoute
]
}
在这里,/ inputs重定向到/ om / inputs,没有任何问题。但是 / inputs / 23被重定向到/ om / input /:id
我在这里想念的是什么?我希望将其重定向到 / om / inputs / 23
答案 0 :(得分:1)
您需要提供一个URL而不是Redirect
的路径。由于您使用的是渲染道具模式,因此可以使用match.params.id
来获取它,其中match
是从回调函数param中获得的。确保使用render
代替Component
作为路线的道具
{
path: '/inputs',
component: InputsContainer,
label: 'Inputs',
icon: 'fal fa-mobile',
menu: false,
routes: [
{
path: '/inputs',
render: () => <Redirect to="/om/inputs" />,
index: true,
exact: true
},
{
path: '/inputs/:id',
render: ({match}) => <Redirect exact from="/inputs/:id" to={`/om/orders/${match.params.id}`} />,
label: "Order Details",
menu: false
},
notFoundRoute
]
}