生命周期
简单来说,一个 React 组件实例从创建到销毁,会经历创建->挂载->更新(也许重复更新)->销毁的过程。
一、创建和挂载
React.js 将组件渲染,并且构造 DOM 元素然后插入页面的过程称为组件的挂载。
当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下:
constructor() // React 组件的构造函数
render() // React 组件的渲染函数
componentDidMount() // 在组件挂载(插入 DOM 树中)后触发
二、更新
1. 组件自身的更新
当组件的 props 或 state 发生变化时会触发更新。组件更新的生命周期调用顺序如下:
shouldComponentUpdate() // 默认当 props 或 state 发生变化时,在渲染执行之前触发
componentWillUpdate() // props 或 state 发生改变时触发
render()
componentDidUpdate() // 在更新后立即触发
2. 父组件引发的更新
父组件发生 render 的时候,无论 props 有没有更新,也无论父子组件之间有没有数据交换,子组件都会触发更新周期。
父组件引发子组件更新的生命周期调用顺序如下:
componentWillReceiveProps() // Component 接受到新的状态 (props) 时触发
shouldComponentUpdate()
componentWillUpdate()
render()
componentDidUpdate()
三、卸载
当组件从 DOM 中移除时会调用如下方法:
componentWillUnmount() // 在组件卸载及销毁之前触发
总结