如果是React控制的事件处理程序以及在它的钩子(生命周期)函数内调用setState,它不会同步的更新state
也就是说:React控制之外的事件调用setState是同步更新的,例如原生js绑定的事件...,对于在React中的JSX绑定的事件处理函数中调用setState方法是异步的就可以了
如果你需要基于当前的state来计算出新的值,那么setState函数就应该传递一个函数,而不是一个对象,它可以确保每次调用的都是使用最新的...从上面的代码中,在事件处理函数中调用setState方法时,当setState函数传递的是一个函数时,这个函数接收两个形参数,第一个参数prevState(参数名任意),是先前组件状态时的state,而后一个参数...函数应该传递一个函数而不是对象,这样可以保证每次调用的状态值都是最新的
至于为什么React不选择同步更新this.state
这是因为React是有意这么设计的,做异步等待,在constructor构造器函数执行完后...,不能直接被修改,如果想要修改某些值,用来响应用户的输入或者输出响应,可以借用React内提供的setState函数进行触发,并用state来作为替代
state是当前组件的内部状态,它的作用范围只局限于当前组件