React:ReactJS中不会更新UI数据

时间:2019-03-28 21:36:44

标签: javascript reactjs user-interface ecmascript-6

我正在从事ReactJS项目,在这里我通过API显示数据。实际上,当我看到它显示URL筛选器数据但未刷新UI时,REST调用就可以正常工作,刷新浏览器的UI已更新。我是ReactJS的新手,有人可以帮助我如何解决此问题。

谢谢

代码

 class Example extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      Item: 5,
      skip: 0
    }

    this.handleClick = this.handleClick.bind(this);
  }

  urlParams() {
    return `http://localhost:3001/meetups?filter[limit]=${(this.state.Item)}&&filter[skip]=${this.state.skip}`
  }

  handleClick() {
    this.setState({skip: this.state.skip + 1})
  }

  render() {
    return (
      <div>
        <a href={this.urlParams()}>Example link</a>
        <pre>{this.urlParams()}</pre>
        <button onClick={this.handleClick}>Change link</button>
      </div>
    )
  }
}


ReactDOM.render(<Example/>, document.querySelector('div#my-example' ))

2 个答案:

答案 0 :(得分:0)

您首先需要删除componentWillUpdate,因为这被宣布为不安全的。但是,您可以尝试componentDidUpdate。这应该解决此问题。您还可以使用useEffect钩子,该钩子基本上充当componentDidMount和componentDidUpdate。

componentDidUpdate(prevProps) {
console.log(prevProps, this.props)
  // Typical usage (don't forget to compare props):
  if (this.props.parties !== prevProps.parties) {
    this.setState({
    data: props.parties,
    renderData:props.parties
  });
  }

}

答案 1 :(得分:0)

对于这个问题我有些困惑,但这可能是setState问题。状态通常要比render落后一步,除非您在setState之后进行回调,即在您编写的部分:

this.setState({
    data: nextProps.parties,
    renderData:nextProps.parties
  });

尝试

this.setState({
    data: nextProps.parties,
    renderData:nextProps.parties
  }, () => {});