ReactJS-/ path /:id使用字符串:id而不是id值重定向

时间:2019-06-18 07:27:59

标签: reactjs redirect react-router

我正在用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

1 个答案:

答案 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
  ]
}