为什么我们在setState
中有一个回调?
我是新来的反应者,我试图理解,但我无法完全理解。
答案 0 :(得分:1)
increasePrice = () => {
this.setState({
price: this.state.price + 1
})
this.props.getPriceData(this.state.price)
}
setstate是一个异步进程;未更新 例如,如果要在修改后传递数据,则需要使用以下回调函数
increasePrice = () => {
this.setState({
price: this.state.price + 1
},()=>{
this.props.getPriceData(this.state.price)
})}
答案 1 :(得分:1)
如文档中所述: https://reactjs.org/docs/react-component.html#setstate
setState()并不总是立即更新组件。它可能会批量更新或将更新推迟到以后。这使得在调用setState()之后立即读取this.state可能是一个陷阱。而是使用componentDidUpdate或setState回调(setState(updater,callback)),确保在应用更新后均能触发这两种方法。如果需要基于先前的状态来设置状态,请阅读以下有关updater参数的信息。
永远不要直接修改状态对象,而应使用setState()
提供的更新程序功能:
// Bad
this.state.counter = this.state.counter + this.props.step;
// Good
this.setState((state, props) => {
return {
counter: state.counter + props.step
};
});
答案 2 :(得分:0)
setState
本质上是异步的。如果要在设置后立即使用更新的状态,则使用状态回调。
示例-
setState(
{ name: "ABC" },
() => console.log(this.state)
);
// => { name: "ABC" }
阅读此SO帖子以了解何时使用它。