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的⽅案是?
只能使用新的生命周期方法名