React router params更改时强制重新安装组件?

时间:2017-12-28 15:09:19

标签: reactjs react-router

我编写了一个简单的应用程序,其中远程资源在组件的componentDidMount函数内被提取。

我正在使用React Router,当路由完全更改时,先前的组件已卸载,然后安装新的组件。

问题是当用户停留在同一路线上时,但只更改了一些参数。在这种情况下,组件仅更新。这是默认行为。 但有时很难处理以前只需要componentDidMount的所有子组件中的更新...

当用户停留在同一条路线但有些参数正在改变时,有没有办法强制重新安装组件?

感谢。

1 个答案:

答案 0 :(得分:1)

执行以下操作

路线应该是这样的。

<Route  path='/movie/:movieId'  component={Movie} /> 

当你去/ movie /:movieID

class Movie extends Component {

 loadAllData = (movieID) => {
    //if you load data 
    this.props.getMovieInfo(movieID);
    this.props.getMovie_YOUTUBE(movieID);
    this.props.getMovie_SIMILAR(movieID);
  }
  componentDidMount() {
    this.loadAllData(this.props.match.params.movieId);
  }
  componentWillReceiveProps(nextProps){
    if(nextProps.match.params.movieId !== this.props.match.params.movieId) {
      console.log(nextProps);
      this.loadAllData(nextProps.match.params.movieId);
    }
  }

  render(){
    return( ... stuff  and <Link to={`/movie/${id}`} key={index}>...</Link>)
  }
 }