我正在从事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' ))
答案 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
}, () => {});