react 16.3+ 新生命周期 作业

1、有哪些⽣命周期被舍弃(3个),哪些⽣命 周期是新增(2个)?

componentWillMount()、componentWillReceiveProps()、componentWillUpdate()被舍弃,static getDerivedStateFromProps()和getSnapshotBeforeUpdate()是新增

2、这些⽣命周期被舍弃或新增的原因?以及 新增⽣命周期的参数和作⽤?

(1)这些旧的生命周期常常被误解以及滥用

(2)在Fiber架构下这些旧的生命周期可能会执行多次,表现就变得不可预期

3、react⼏个版本(1.6.3、1.6.4、1.7.0)对⽣ 命周期的相关处理和规划?

16.3版本:旧的生命周期方法名、别名、新的生命周期方法名有效

16.4版本:旧的生命周期方法名、别名、新的生命周期方法名有效,但旧的生命周期方法名在开发模式下会有警告提示

17.0版本:只有别名和新的生命周期方法名有效

4、为什么要把getDerivedStateFromProps设计为静态⽅法?

因为隔离组件实例访问,所以也就不能用this.setState()等一些方法,保持该方法的纯粹,它就是用来定义派生state的,除此之外不能进行任何操作

5、getDerivedStateFromProps被触发执⾏的条件有哪些?

初始挂载、prop更新、通过setState更新

6、Derived state的定义是?(如何理解derived state?)

派生state,derived state是在静态方法getDerivedStateFromProps里根据props按需更新的state

7、在1.6.3中,setState()不会引起 getDerivedFromProps的执⾏,⽽1.6.4.会,原因是?

16.4版本进行了纠正,确保了与React即将推出的异步呈现模式的兼容性

8、1.6.2及其以前升级到1.6.4的⽅案是?

可以依旧使用旧的生命周期方法名,也可以使用新的生命周期方法名,但两者不能同时使用

9、1.6.x升级到1.7的⽅案是?

只能使用新的生命周期方法名