1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

React官方团队实例原生Hook闭包陷阱

深入理解React Hooks中的闭包陷阱

作为本际云服务器推荐网的小编小本本,我们不得不说,Hooks是React16.8版本引入的一项新特性,使得函数式组件可以拥有类组件同样的功能。但是,在Hooks的使用中存在所谓的闭包陷阱。

React官方团队实例原生Hook闭包陷阱

闭包陷阱的产生是由于回调函数被useCallback缓存,形成闭包,所以点击的效果始终是缓存的sendMessage(”),无法实现传递text的最新值。

解决Hooks闭包陷阱的方法

一种解决方式是为useCallback增加依赖项,当依赖项(text)变化时,useCallback会返回一个全新的引用,避免了函数引用被缓存的问题。

另一种解决方式是引入一个新的原生Hook——useEvent。代码实现依赖于一个函数,这个函数有两个特性:在组件多次render时保持引用不变,函数内始终能获取到最新的props与state。

useEvent的实现与与其他开源Hooks的差异

useEvent定位于处理事件回调函数这一单一场景,而其他开源Hooks库定位于缓存各种函数。因为在并发更新下使用其他开源Hooks的潜在风险较高,而useEvent通过限制handlerRef.current更新时机,进而限制应用场景,最终达到稳定的目的。

当前useEvent还处于RFC(RequestForComments)阶段,命名也存在争议,但扩大应用场景意味着增加使用时出错的风险,需要谨慎使用。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7242.html