react学习3 生命周期

componentDidMount()与render()一个级别的,在组件挂载完成之后调用

 卸载组件:REACTDOM.unmountComponentAtNode()

componentWillUnmount() 组件马上被卸载的时候

老生命周期:

 

 新的生命周期:

废弃了(加上Unsate_还是能继续用)三个带will的钩子,新增了两个场景罕见的钩子,暂时先不学了,用到的时候再说吧。

getDerivedStateFromProps是React生命周期中的一个静态方法,它在组件收到新的props或state时被调用,然后返回一个新的state,这个state会覆盖现有的state。它的主要目的是处理props的变化,从而更新组件的state。

使用getDerivedStateFromProps可以使React组件在接收到props变化时,根据新的props计算出一个新的state,这样就可以实现在组件接收到props变化时重新渲染组件。需要注意的是,在使用getDerivedStateFromProps时应该避免在返回值中使用this.props或this.state,因为这样会导致副作用。

需要注意的是,虽然getDerivedStateFromProps可以在props变化时更新state,但另一个钩子函数componentDidUpdate也可以实现相同的功能。因此,在使用getDerivedStateFromProps时需要进行权衡和选择,以确保使用适合当前情况的方法。

getSnapshotBeforeUpdate是React组件的生命周期函数之一,它在组件更新之前被调用。它的返回值将作为componentDidUpdate()的第三个参数,用于在更新后获取组件状态或DOM元素的快照。

使用getSnapshotBeforeUpdate可在组件更新后获取更新前的状态或DOM元素快照,并根据这些信息对组件进行优化或处理。例如,在组件更新前获取某个DOM元素的高度,然后在更新后进行一些操作,以确保DOM元素保持不变,从而避免出现闪烁等视觉上的不一致。

需要注意的是,在使用getSnapshotBeforeUpdate时,需要特别留意处理逻辑的实现细节,以确保数据的正确性和组件的稳定性。使用不当可能导致组件出现异常或界面变得不稳定。因此,该方法只应该在必要的情况下使用,以避免增加不必要的复杂性和风险。

React的Diffing算法:也叫虚拟DOM的Diffing算法,是React实现高效更新界面的重要技术之一。

React的Diffing算法的核心是通过对比虚拟DOM树的差异来减少实际DOM操作的次数,从而提升页面渲染的效率。相比传统的DOM操作方式,React先通过JSX语法生成虚拟DOM树,然后对比新旧虚拟DOM树的差异,只更新变化的部分。

React的Diff算法具体实现如下:

1. 首先比较根节点是否相等,如果不相等,则替换整个UI树。

2. 对比同层节点,如果节点类型不一样,则直接替换;如果节点类型相同但是属性不同,则更新属性,这样虚拟DOM树和真实DOM树就一致了。

3. 对比同层节点的子节点,找出差异后只更新需要更新的部分,而其他部分则不作出任何改变。

4. 最后,React会把所有需要更新的节点一次性更新到真实DOM树中,以减少实际DOM操作的次数。

需要注意的是,Diff算法的实现可能会受到数据结构和更新状态等因素的影响。因此,在React应用开发中需要灵活选择最适合场景的更新优化方式,以实现高效的页面渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值