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

闭包陷阱的产生是由于回调函数被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
