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’.