我有简单的点击处理程序,在这种情况下它可以工作:
handleClick = () => {
const { isCalendarOpen } = this.state;
this.setState ({ isCalendarOpen: !isCalendarOpen });
};
但是我必须在setState中使用回调函数,所以我尝试这种方式:
this.setState(state => ({
isCalenderOpen: !state.isCalenderOpen
}));
这不是很奇怪:(有人可以建议如何解决问题吗?
答案 0 :(得分:2)
在setState
中,第二个参数是在设置状态后将调用的回调函数。第一个参数是将状态更新到的对象,或者是将返回更新状态的函数。在这两种情况下,您都将更新状态。应该是
this.setState ({ isCalendarOpen: !isCalendarOpen }, () => {
// callback function
});
或
this.setState(state => ({
isCalenderOpen: !state.isCalenderOpen
}), () => {
// callback function
});