React的生命周期从广义上分为三个阶段:挂载、渲染、卸载
挂载:在组件实例被创建并插入到dom中时,生命周期调用顺序如下
constructor(数据的初始化常用)
componentWillMount(在挂载之前也就是render之前被调用)
getDerivedStateFromProps(从props获取state)render(class组件中唯一必须实现的方法)(render函数会插入jsx生成的dom结构,react会生成一份虚拟dom树,在每一次组件更新时,在此react会通过其diff算法比较更新前后的新旧DOM树,比较以后,找到最小的有差异的DOM节点,并重新渲染。)
componentDidMount(在组件挂在后(插入到dom树中)后立即调用)(可以在这里调用Ajax请求,返回的数据可以通过setState使组件重新渲染,或者添加订阅,但是要在conponentWillUnmount中取消订阅)
更新:当组件的 props 或 state 发生变化时会触发更新。(正在被重新渲染)
componentWillReceiveProps ()(在已挂载的组件接收新的props之前调用)
shouldComponentUpdate(在渲染之前被调用,默认返回为true。)
componentWillUpdate(当组件接收到新的props和state会在渲染前调用,初始渲染不会调用该方法。)
getSnapshotBeforeUpdate(在最后一次渲染(提交到dom节点)之前调用)
componentDidUpdate(在更新之后立即调用,首次渲染不会调用,之后每次重新渲染都会被调用)卸载:当组件从 DOM中移除时会调用如下方法(已经移出真实dom):
componentWillUnmount()(在组件卸载和销毁之前调用)
新增:getDerivedStateFromProps(nextProps, prevState)? ? ? ? ? getSnapshotBeforeUpdate(prevProps, prevState)