React 生命周期主要包含三个阶段:初始化阶段、运行中阶段和销毁阶段,在 React 不同的生命周期中,会依次触发不同的钩子函数
创建前/创建后/挂载前
constructor
设置组件的初始化状态
constructor(){super()this.state={name:0 }}
挂载后
componentDidMount
组件已经被渲染到页面中后触发:此时页面中有了真正的 DOM 元素,可以进行 DOM 相关的操作。
更新前
getDerivedStateFromProps
shouldComponentUpdate
组件接收到新属性,或者组件的状态发生改变时触发,组件首次渲染时并不会触发
shouldComponentUpdate(newProps,newState){if(newProps.number < 5) return true;return false}//该钩子函数可以接受两个参数,新的属性和状态,返回true/false来控制组件是否需要更新。
一般我们通过该函数来优化性能:
shouldComponentUpdate()
中加入条件判断,从而优化性能。PureComponent
的类,当我们的组件继承于它时,组件更新时就会默认先比较新旧属性和状态,从而决定组件是否更新。指的注意的是,PuerComponent
进行的是浅比较,所以组件状态或者属性改变时,都需要返回一个新的对象或者数组。render
更新后
组件被更新完成后触发,页面中产生了新的 DOM 元素,可以进行 DOM 操作。
销毁前
componentWillUnmount
组件被销毁时触发,这里我们可以进行一些清理操作,例如清理定时器,取消 Redux 的订阅事件。