渲染

时间:2019-12-08 15:57:38

标签: javascript reactjs react-router

我需要连接到组件更新事件,以获取新数据。因此,我写了类似的东西:

...
constructor(props) {
  super(props);
  const values = queryString.parse(this.props.location.search),
    type = values['type'];
  this.props.loadChallengeDetails(type);
}

shouldComponentUpdate() {
  console.log('shouldComponentUpdate');
  /* if (this.props.location.search !== nextProps.location.search) {
    console.log('should reload report');
    const values = queryString.parse(nextProps.location.search),
      type = values['type'];
    this.props.loadChallengeDetails(type);
  } */
  return true;
}

componentDidUpdate(prevProps) {
  console.log('componentDidUpdate');
  if (this.props.location.search !== prevProps.location.search) {
    console.log('should reload report');
    const values = queryString.parse(this.props.location.search),
      type = values['type'];
    this.props.loadChallengeDetails(type);
  }
}

render() {
  console.log('details:', this.props.details);
...

如果可以的话,此页面/视图是“母版”页面的“详细信息”。根据查询中传递的type的值,它会获取一些数据。

在第一次渲染时,它发生的很好。 shouldComponentUpdatecomponentDidUpdate生命周期方法均被调用。当我返回时,然后查看另一条记录的详细信息,但是它显示了过时的数据。控制台日志在渲染器内打印details,但不调用shouldComponentUpdatecomponentDidUpdate

我在做什么错?请告知。

0 个答案:

没有答案