用了react一年,很多东西用的也是迷迷糊糊的,这里报了来自于拉钩教育的修言老师的课程来系统的学习一下react。下面算是我对于课程的笔记记录以及自我的一点理解吧。在此作出记录以及分享。如果想要一起加入学习之路的可以 点击这里 或者下面评论里说出来~ 共勉!
上一篇 v15生命周期
上一篇我们讲了react 15的生命周期,接下来我们就再讲讲react 16的。
对了在讲之前啊,我这里放一个在官网的对于v16的做的一个流程图,对理解生命周期的执行有很大的帮助。
还是三个阶段:
一、Mounting 阶段:组件的初始化渲染(挂载)
进入constructor
getDerivedStateFromProps方法执行
render方法执行
componentDidMount方法执行
React 15 生命周期和 React 16.3 生命周期在挂载阶段的主要差异在于,
废弃了 componentWillMount,新增了 getDerivedStateFromProps。
getDerivedStateFromProps 这个 API,其设计的初衷不是试图替换掉componentWillMount,
而是试图替换掉 componentWillReceiveProps,
因此它有且仅有一个用途:使用 props 来派生/更新 state。
getDerivedStateFromProps 的返回值之所以不可或缺,
是因为 React 需要用这个返回值来更新(派生)组件的 state。
因此当你确实不存在“使用 props 派生 state ”这个需求的时候,
最好是直接省略掉这个生命周期方法的编写,否则一定记得给它 return 一个 null。
二、Updating 阶段:组件的更新
//重点说一下下面这个getDerivedStateFromProps(若文字不够直观,可以看文初的流程图):
//16.3:只会在New props时执行。
//16.4:New props,setState,forceUpdate 都会执行
getDerivedStateFromProps方法执行
shouldComponentUpdate方法执行
render方法执行
getSnapshotBeforeUpdate方法执行
componentDidUpdate方法执行
React 16.4 的挂载和卸载流程都是与 React 16.3 保持一致的,差异在于更新流程上:
在 React 16.4 中,任何因素触发的组件更新流程(包括由 this.setState 和 forceUpdate 触发的更新流程)都会触发 getDerivedStateFromProps;
而在 v 16.3 版本时,只有父组件的更新会触发该生命周期。
三、Unmounting 阶段:组件的卸载
componentWillUnmount
done.