检查路线是否存在

时间:2017-06-02 20:54:26

标签: reactjs react-router

我希望仅在我的JSON文件中存在产品时才将请求重定向到/work/:product。目前我有以下内容:

<Route path="/work/:product"render={props => (check_that_product_exiists) ? <Life sayHello = { this.sayHello } />:<Redirect to="/" />} />

产品名称当前位于具有此架构的JSON文件中:

[
    {
        "name":"adcall",
        ...
    },
    ...
]

如何检查占位符产品是否位于嵌套JSON文件的其中一个元素中?我正在使用react-router v4(与以前的版本略有不同)。

1 个答案:

答案 0 :(得分:0)

我个人不会在路由器级别但在组件级别这样做。因此,允许用户通过:

<Route
  path="/work/:product"
  render={Life}
/>

然后在Life组件中,您可以

...
componentWillMount() {
  if (isProductExisting === false)
    window.location = '/';
}
...

我在componentWillMount中执行此操作的原因是因为我想避免在我重定向的情况下安装组件。在此组件中,您可以从导入的JSON文件和路径中获取产品名称(在这种情况下,请确保使用withRouter方法将路由道具传递给此组件)。