当前位置: 首页 > 网络应用技术

React Hooks清除指南,不再是新秀

时间:2023-03-07 11:01:12 网络应用技术

  目前,该团队用于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