2019-03-02
回答
当 setState
执行完成且组件被渲染完成时,将调用回调函数。由于 setState
是异步的,因此下一步执行的任何操作都可以使用该回调函数。
setState({ name: "sudheer" }, () => {
console.log("The name has updated and component re-rendered")
})
加分回答
- 在
setState
完成后会调用回调函数,下一步需要执行的任何操作都可以使用该回调函数来实现。 - 建议使用生命周期方法而不是该回调函数。
setState
中的第一个参数也可以传入函数,其结构为function(state, props) => newState
。这个函数会将每次更新都加入队列中,执行时通过当前的state
和props
来获取新的state
。这样一来 React 就不会将对象合并(显然根本没有对象让他合并),把多次状态修改打包后进行一次批处理操作了。