如何在相同的setState中获取增量变量?
我有以下示例
https://codesandbox.io/s/jjj3k80o3y
如您所见,第一个值正确递增,但第二个值落后一个值。 可能增量值与currentIndex的值相同吗?
incrementAction = () => {
this.setState({
currentIndex: this.state.currentIndex + 1,
incrementedIndex: this.state.currentIndex
});
};
答案 0 :(得分:2)
反应setStates
被批量处理。它不会一次更新一个属性的状态。
在第二个属性中,您仍在使用状态的旧版本,这就是为什么它不会递增的原因。
顺便说一句,当您使用状态的当前值来计算下一个时,应该使用方法表示法,而不是对象之一:
incrementAction = () => {
this.setState(prevState => ({
currentIndex: prevState.currentIndex + 1,
incrementedIndex: prevState.currentIndex
}));
};