状态默认值
state = {
moveType: {
value: 0,
open: false,
completed: false
}
};
// 更新新状态的回调函数
let step = 'moveType';
let val = 3; // new value
let newObj = { ...this.state[step], value: val };
console.log(newObj);
this.setState({[step]: newObj }, function () {console.log(this.state);});
console.log(newObj)
显示了新值,但是 this.state
仍然显示旧值。你能告诉我我做错了什么吗?
setState()
的第二个参数是一个可选的回调函数,它将在setState
完成并且组件重新渲染后执行。”难道回调不应该包含新值吗? - elmeisterconsole.log(this.state);
记录了旧值?我很惊讶它居然记录了什么。在回调函数内部,this
不是 指向 React 组件。 - Felix Klingfunction()
改为() =>
或者使用self
代替this
- 效果是一样的。 - elmeisterrender
函数的事件处理程序之一,事情就会奏效。 - elmeister