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

问题描述 投票:1回答:1

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

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

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

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

谢谢。

reactjs react-router
1个回答
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>)
  }
 } 
© www.soinside.com 2019 - 2024. All rights reserved.