5、关于state主要三点:
1)不要直接修改state,使用setState才会重新渲染页面
构造函数是唯一可以给 this.state 赋值的地方,即state的初始化
2)State 的更新可能是异步的
因为 this.props 和 this.state 可能会异步更新,所以你不要依赖他们的值来更新下一个状态。
3)State 的更新会被合并,setState并不会立即改变state的值,而是将其放到一个任务队列里,最终将多个setState合并,一次性更新页面
6、React设计setState方法就是为了重新渲染页面
主要是setState触发页面重新渲染, 需要经过以下生命周期:
- shouldComponentUpdate
- componentWillUpdate
- render
- componentDidUpdate
state的值只有在render的时候才真正被修改了
7、生命周期
componentWillMount: 在渲染前调用,在客户端也在服务端。
componentDidMount : 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。 如果你想和其他JavaScript框架一起使用,
可以在这个方法中调用setTimeout, setInterval或者发送AJAX请求等操作(防止异步操作阻塞UI)。
componentWillReceiveProps: 在组件接收到一个新的 prop (更新后)时被调用。这个方法在初始化render时不会被调用。
shouldComponentUpdate :返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。 可以在你确认不需要更新组件时使用。
componentWillUpdate:在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用。
componentDidUpdate: 在组件完成更新后立即调用。在初始化时不会被调用。
componentWillUnmount:在组件从 DOM 中移除的时候立刻被调用。