如果路径改变,如何重新渲染组件?

时间:2017-10-23 17:46:06

标签: reactjs react-router

如果我在电影页面上

/movie/some-movie

然后转到

链接
/movie/another-movie

组件不呈现

react-route v4

路由器

<Route exact path="/movie/:urlRusLat" component={Movie} />

链路

<Link to={'/' + item.media_type + '/' + urlRusLat(item.title || item.name) + '-' + item.id} className="result-element" key={index}>

我尝试使用 componentWillReceiveProps 并发送请求,但我收到道具新位置,就像在nextProps中一样。

&#13;
&#13;
componentWillReceiveProps(nextProps) {
  console.log(this.props)
  if (this.props.location.pathname !== nextProps.location.pathname) {
    this.sendRequest();
  }

}

componentDidMount() {
  this.sendRequest();
}

componentWillUnmount() {
  this.props.clearMovieData();
}

sendRequest = () => {
  let movieId = this.props.location.pathname.split('-');
  this.props.loadMovieData(movieId[1]);
}
&#13;
&#13;
&#13;

如果路径更改或再次渲染组件,如何发送请求?

1 个答案:

答案 0 :(得分:5)

您可以使用componentDidUpdate()来调用sendRequest()函数。现在你获得了更新的道具。但是在发出sendRequest()调用之前,请确保添加了对oldProps.location!= props.location的检查。