通过 react-router-4 导航后没有获取路由参数

Not getting route params after navigating via react-router-4

通过 this.props.history.push 导航后,我没有在 component 中找到 route params

我有一个 component 正在两条路线上呈现。

所以从一条路线转到另一条路线会导致 component update 而我没有得到其中的 route params

如果刷新页面我得到 route params

this.props.history.push(`/pois/select/${lastAction.payload.poiID}`)

我的路由组件。

  class Routes extends React.Component {
  render() {
    return <div>
            <Switch >
                <Route exact path="/pois/" component={ POIS } mode='view' />
                <Route exact path="/pois/select/:poiID" component={ POIS } mode='select' />
                <Route exact path="/pois/create" component={ POIS } mode='create'/>
                <Route exact path="/pois/update/:poiID" component={ POIS } mode='update'/>
            </Switch>
       </div>;
  }

结合使用 componentWillReceivePropscomponentDidMount 生命周期方法。

当第一次组件呈现时,在 componentDidMount 方法中调用 api,并获取数据,如下所示:

componentDidMount(){
   // ajax call to fetch data then do setState to store in state variable
}

下次当 props 发生任何变化时,componentWillReceiveProps 方法将被调用,在其中执行 api 调用,如下所示:

componentWillReceiveProps(nextProps){
     console.log(nextProps.params, this.props.params);
  // nextProps.params will print the new params values
  // this.props.params will print the old params values
  // ajax call to fetch data then do setState to store in state variable
}