【问题标题】:Force remounting component when React router params changing?React路由器参数更改时强制重新安装组件?
【发布时间】:2018-06-09 03:21:55
【问题描述】:

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

我正在使用 React Router,当路由完全改变时,之前的组件会被很好地卸载,然后新的组件会被安装。

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

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

谢谢。

【问题讨论】:

标签: reactjs react-router


【解决方案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>)
  }
 } 

【讨论】:

猜你喜欢
  • 2018-08-06
  • 2021-09-28
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
相关资源
最近更新 更多