setState() Link to heading

setState() 接受对象作为参数. 只要调用 setState(), 组件就会重新渲染. 但是当调用 setState()的时候, reactjs 并不会马上修改 state. reactjs 会把修改放到一个更新队列里面, 稍后才会从队列中把新的状态提取出来合并到 state 中, 然后再触发组件更新.

还有就是 setState() 只能在已经挂载或者正在挂载的组件上调用.

我们一般会把组件的 state 的初始化工作放在 constructor 里面去做;在 componentWillMount 进行组件的启动工作,例如 Ajax 数据拉取、定时器的启动;组件从页面上销毁的时候,有时候需要一些数据的清理,例如定时器的清理,就会放在 componentWillUnmount 里面去做。

为什么有 setState()? Link to heading

html form 和 react 中的 dom 元素不太一样. html 中 form maintain their own state and update it based on user input. 但是在 reactjs 中, state is typically kept in the state property of components, 所以需要用 setState() 来 update.

通过把 state 保持在 component 中, react 成功的做到了 state 只和 component 中的 state 有关, 即 ‘single source of truth’.

credit to Link to heading