目前,该团队用于Recthooks。对于小林来说,这确实是很多挑战,他从未触及过Recthooks的实际战斗项目。为了让更多的新手迅速开始使用Recthooks,我在此为Recthooks写了一种学习方式。
钩子的出现起初是为了允许功能组件支持地位的管理,但是在学习过程中,我意识到许多钩子的优势。
功能和类缠结:功能组件更有效。类组件(类)具有状态管理,这对于以后的扩展很方便。学习挂钩后不必纠缠不清。
Tedicatienated生命周期:当我们第一次学习反应时,我们总是需要清楚地记住组件的生命周期和执行时间。学习挂钩后,我们可以完全抛弃生命周期。
这个问题是:React是这一点总是令人头疼。尽管在线解决方案是在线解决方案,但其他代码总是很麻烦。学习挂钩后,我们不再需要考虑此问题。
简单代码:与传统方法相比,用于实现函数钩方法的代码量将少。
原始方法实现了计数器
使用钩子实现计数器
与实现传统方法钩子的实现相比,该代码的三分之一被直接减少。它更简洁,更易于在代码上维护。
接下来,让我们介绍Recthooks的主要模块和用法。
使普通函数组件也具有管理状态的能力。实际上,我们在上面的代码中使用了USESTATE,它将在此模块中详细介绍其用法。我们从一个说明开始:
左数组部分是ES6的解构,在随后的解释中,我们将使用这种语法。
数组的第一个参数是(对于页面的显示和逻辑处理),第二个参数为。usestate方法需要一个参数,这是该参数的默认值。
请勿在条件语句中声明钩子
?错误情况
控制台错误
挂钩渲染是从上到下进行的。如果在if语句中使用它,因为第一次未向用户执行它,则突然检测到渲染后稍后检测到,这将导致控制台报告错误(可以理解为突然发现渲染突然发现了Oneunknown Usestate,旧版本不会报告错误,但是新版本解决了此问题,因此控制台将报告错误)。
为什么我要更改对象状态视图但没有刷新?
当我们将状态设置为数组或对象时,我们只想更改其中一个属性。
?错误情况
发现该视图没有得到刷新,因为信息的指针指出了不变的。
正确的方法是使用解构或阴影副本的形式。
使用效率主要用于监视状态值的变化,在构造组件时收听监视,并在破坏组件时进行监视。
生命周期功能钩。
我曾经使用类组件的生命周期来类比钩的执行时间。后来发现这不是一种好方法。首先,根本无法比较此方法。其次,在React18中添加API。屏幕外会影响钩子的执行时间。
函数组件仅描述UI状态,而React将其同步到DOM,仅此而已。
使用效率方法具有两个参数。第一个参数是要执行的函数。第二个参数是一个因数组(侦听哪个状态值要监视哪个状态值,以确定在数组中填充的内容)。
1.不要通过
USEFEFT不会传递第二个参数,以使用户每次渲染时都运行useeeffect。
2.传递空数组
仅在安装和卸载时执行,如果有多个,则是更改时的更改
3.通过非空数阵列
仅当更新监视值时才会触发它
3.返回功能
当组件被破坏时调用功能
UseContext主要用于跨级别的状态和儿童组件的传输,实现了状态共享(类似于Vue的Vuex)。
在了解USECONTEXT之前,使用太阳组件的状态传输是通过道具。
我们可以看到,当级别的级别复杂时,它变得复杂。使用usecontext后,父组件生成的状态将被太阳组件直接消耗。
父组件
后人
新创建的DOM节点将在提供商之外。
当我们通过文档创建DOM.CREATEELEMENT并将内容安装到上面时,节点将不享受上下文的状态管理(即节点在提供商之外)。
USEMEMO是一种以缓存状态形式优化性能的手段。
我们都知道,只要状态更改,组件视图就会从新事物中呈现。
查看以下案例:
父亲组件代码
副代码
我们希望只有在名称更改时,触发了子类的更改方法。但是,当我们更改内容时,我们还会触发changEname。由于父组件的重新填充也已重新呈现sub -component。
使用usememo来缓存状态,并且仅在更改时才触发相应的方法。特定代码如下
优化的子组件
仅在React功能中调用钩子
当我们文件中的两个组件需要上下文时,简化代码的想法提示我们提取。
我在上面发现了一个错误。这是不可取的。我们还可以在官方网站上找到相应的提示。
像以前学到的UseMemo一样,USECALLBACK也用于优化性能。不同之处在于,用户背式缓存是一种方法。当小灵刚学习钩子时,我写了几个死周期。
让我们首先查看以下代码:
我们使用settimeout在后端模拟请求。
在这种情况下,没有usecallback,并且收集了组件本身。如果涉及组件通信,情况将不同:
在我们知道异步方法仅执行一次的情况下,我们可以使用usecallback来修复它。
数组中的参数与先前学习的使用效果相同。它是其依赖项。
可以说用户deucer是usestateTateTateTateTeTeTeteteter的集合。对redux的概念限制了多个状态。
案件
结合我们以前学到的用户篇幅,我们可以实现一个简单的redux。
案件如下
当我们单击“ addColor组件”时,将颜色添加到文本中。当我们单击“倒数”组件时,将背景颜色添加到文本中。
核心提供商
USEREF主要用于建立中间值或调用子组件方法。
USEREF返回一个变量遣返器,其.Crurnent属性被初始化以传递参数()。返回的REF对象在整个生命周期中保持不变。
例如,我们每次设置一个计数属性,并在计数很奇怪时隐藏。该显示和隐藏不能单独用作状态,目前我们可以使用USEREF来控制它。
父组件
子组件
这样,我们可以调用子组件方法。
自定义挂钩在实现方面也非常简单。
您可以将任何参数传递给此钩子。与普通函数的区别是内部是否还有其他钩子。如果其他挂钩未在内部实现,则此功能不是自定义挂钩。
如下所示,我们声明一个组件。
打开组件方法,关闭组件方法以及组件内容的内容到呼叫派对。
其中,开头方法是设置组件的状态。
陈述自定义挂钩
使用自定义钩
到目前为止,所有挂钩都已经结束。官方网站还提供其他挂钩。
“ usecallback”
本文的代码地址:RH-Project
原始:https://juejin.cn/post/7099045192962932750