如何在setState函数中使用回调函数

时间:2018-12-10 08:10:56

标签: reactjs

我有简单的点击处理程序,在这种情况下它可以工作:

        handleClick = () => {
            const { isCalendarOpen } = this.state;

            this.setState ({ isCalendarOpen: !isCalendarOpen });
        };

但是我必须在setState中使用回调函数,所以我尝试这种方式:

       this.setState(state => ({
           isCalenderOpen: !state.isCalenderOpen
       }));

这不是很奇怪:(有人可以建议如何解决问题吗?

1 个答案:

答案 0 :(得分:2)

setState中,第二个参数是在设置状态后将调用的回调函数。第一个参数是将状态更新到的对象,或者是将返回更新状态的函数。在这两种情况下,您都将更新状态。应该是

this.setState ({ isCalendarOpen: !isCalendarOpen }, () => {
  // callback function
});

this.setState(state => ({
       isCalenderOpen: !state.isCalenderOpen
   }), () => {
  // callback function
});