渲染相同的组件,并在某个路径上更改某些状态属性更改

时间:2018-04-16 02:25:22

标签: reactjs react-router react-router-v4 react-router-dom

如何根据路径更改组件的某些状态属性。所以,目前我有一个组件,我已经定义了一个状态属性 showNotebook = true

   super(props);
      this.state = {
        showNotebook: true,
        flipper: true,
        deleteModalOpen: false
      }

我正在使用react-router,我有这样的路线

<Route path='/submission/:id' component={SubmissionContainer}/>

所以现在我希望如果有人去路线

 /submission/:id#comment.id=xyzz

它应显示与上面相同的组件,但属性 showNotebook设置为false ,以便它具有所需更改的相同组件。

我知道此前有类似的问题,但无法找到问题的确切解决方案。所以请事先道歉。

1 个答案:

答案 0 :(得分:0)

您只需检查路由器props中的位置路径名,是否存在id查询参数,然后使用某种逻辑设置状态,如下所示:

this.state = {
  showNotebook: () => {
    if (this.props.location.pathname === '/submission' && this.props.location.search)
      return false;
    return true;
  }
  ...
}