我编写了一个简单的应用程序,其中在组件的 componentDidMount
函数中获取远程资源。
我正在使用 React Router,当路由完全改变时,前一个组件会被卸载,然后安装新的组件。
问题是当用户停留在同一条路线上,但只更改了一些参数时。在这种情况下,仅更新该组件。这是默认行为。
但有时很难处理所有子组件的更新,以前只需要 componentDidMount
...
当用户停留在同一路线上但某些参数发生变化时,是否有办法强制重新安装组件?
谢谢。
最佳答案
执行以下操作
路线应该是这样的。
<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>)
}
}
关于reactjs - React 路由器参数更改时强制重新安装组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009825/