关于ahooks的封装
本篇主要和大家沟通关于ahooks,我们可以理解为加深对Reacthooks的了解。我们先说下关于抽象自定义hooks。构建属于自己的Reacthooks工具库。其实我们应该培养阅读学习源码的习惯,工具库是一个对源码阅读不错的选择。注:本系列对ahooks的源码解析是基于v3.3.13。

封装React需要注意的“时机”
FunctionComponentVSClassComponent。很多时候代码要讲究先后顺序,要掌握周期,且需知道在不同的阶段执行不同操作的代码,比如需要挂载完成之后才去获取dom的值,否则可能会获取不到相应的值。
组件生命周期
ClassComponent使用过React的ClassComponent的同学,就会知道其组件生命周期会分成三个状态:Mounting(挂载):已插入真实DOM,Updating(更新):正在被重新渲染,Unmounting(卸载):已移出真实DOM。其中每个状态中还会按顺序调用不同的方法,具体可以参考官方文档。而FunctionComponent是更彻底的状态驱动,没有生命周期的概念,它只有一个状态,React负责将状态渲染到视图中。
ahooks封装的Effect
基于useEffect/useLayoutEffect,ahooks做了一些封装,能够让你更加清晰的知道你的代码执行时机。其中LifeCycle-生命周期精简了组件挂载、卸载的操作;useUpdate能够强制组件重新渲染;useDeepCompareEffect和useDeepCompareLayoutEffect通过lodashisEqual进行深比较;useUpdateEffect和useUpdateLayoutEffect忽略首次执行,只在依赖更新时执行;useUnmount和useUnmountedRef是组件卸载时执行的Hook。这些封装来帮助我们更好地管理组件的生命周期和事件。
总结与思考
写代码要清楚知道,组件的生命周期是怎样的,还有代码的执行顺序、执行的时机是怎样的。在FunctionComponent中,使用useEffect/useLayoutEffect完成了ClassComponents生命周期的职责。加入ahooks的代码执行时机,可以让代码具有可读性以及逻辑更加清晰。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7244.html
