【发布时间】:2017-08-20 09:48:34
【问题描述】:
在 setState 的文档中是这样说的:
setState() 不会立即改变 this.state 而是创建一个挂起的状态转换。调用此方法后访问 this.state 可能会返回现有值。
不保证 setState 调用的同步操作,调用可能会被批处理以提高性能。
所以我明白你是否有像这样的事件处理程序:
handleClick() {
this.stuff1();
this.stuff2();
}
stuff1() {
this.setState({...});
}
stuff2() {
doSomethingWithState(this.state);
this.setState({...});
}
然后在 stuff2 方法中,您可能不会(或者这保证您不会......)看到来自 stuff1 的状态更新。 React 通过向 setState() 提供函数而不是对象,提供了一种“安全地”访问先前状态的方法。但据推测,您可以通过在处理事件时自己跟踪状态并在方法结束时调用 setState() 来解决此问题。因此,也许还有另一个原因选项可以为 setState() 提供函数。如果在调用 handleClick 方法之前可以对状态进行其他更改怎么办?
例如,如果handleClick() 被调用了两次,那么我是否可以保证在第二次调用handleClick() 时看到状态从第一次调用到handleClick() 的变化?还是在调用我的事件处理程序之前,状态可能会变脏?
【问题讨论】:
标签: javascript reactjs