当前位置: 首页 > 面试题库 >

为什么以这种方式命名React钩子使用XXX?

梅安平
2023-03-14
问题内容

我一直想知道React钩子的命名。例如useEffect,名称如何暗示类似于componentDidUpdate或componentDidMount的名称?而且,在加载组件之后我们执行的这些操作不是副作用,而是主应用程序流程的一部分,那么为什么将这些称为副作用?


问题答案:

为什么以这种方式命名React钩子使用XXX?

从挂钩文档中,使用自定义挂钩

我必须以“ use”开头命名自定义挂钩吗? 拜托
这个约定非常重要。没有它,我们将无法自动检查是否违反了Hooks规则,因为我们无法确定某个函数是否在其中包含对Hooks的调用。

use前缀不指示除了它是一个反应发生反应即已经建立作为命名约定钩其它特定功能。这类似于使用withXXXX前缀的HOC命名约定。

为什么将这些称为副作用?

useEffect当满足特定条件(在这种情况下,当其依赖项数组中的值被更新)时,该挂钩用于触发效果。它与基于类的组件的生命周期函数同义,两个最常见的函数是componentDidMountcomponentDidUpdate

反应状态模型被认为是使用纯函数来更新状态,即setState/ useState/ etc接受输入,不对它们进行突变,而是返回一个 新的
对象,而其他函数,例如useEffect,不直接对它们进行突变和返回,而是可以发出其他效果,例如调用异步API端点等。

使用数组的超级简单示例

  • array::map是一个纯函数,它遍历数组,将每个元素映射到一个新值,然后返回一个新数组。无副作用。(redux reducer通过返回下一个状态值而类似)
  • array::forEach是一个纯函数,它遍历数组,为每个元素调用副作用回调,然后返回undefined。副作用。(调用API,通常没有返回值,但在其他地方触发更新)


 类似资料:
  • 下面是一个最小的代码,用于重新创建让我怀疑的条件: 为什么在大小写中传递常量作为参数而在大小写中工作会出错? 错误的详细信息: 错误:将“const std::basic_string”作为“std::basic_string”的“this”参数传递

  • 问题内容: 我正在研究Java标准库(6)中compare(double,double)的实现。内容为: 此实现的优点是什么? 编辑:“优点”是一个(非常)错误的单词选择。我想知道这是如何工作的。 问题答案: @Shoover的答案是正确的(阅读它!),但是它还不止于此。 由于javadoc中的规定: “此定义允许哈希表正常运行。” 假设Java设计者决定采用与包装实例相同的语义来实现。这意味着将

  • 问题内容: 我一直在学习/使用React钩子进行实验。当我去使用Chrome中的React DevTools检查组件当前状态的值时,我看到状态很好,但是实际的“字段”(即由各个钩子更新的状态变量)没有与之关联的任何名称。相反,我看到的,例如,几个字符串,一对夫妇布尔值,等等。我一般都弄清楚是怎么回事,但是这似乎有问题- 我希望能够看到 其 状态变量的名字是什么。 例如,如果我有类似的东西 当我查看

  • 问题内容: 我有两个例子: 范例1: 范例2: 在 第二个 例子不工作,我想它做的事。我的意思是文件内容不为空,但好像zip文件已损坏。 我想告诉我第一个例子为什么不起作用。 问题答案: 必须在流的末尾执行多项操作以完成zip文件,因此必须正确关闭它。(一般来讲,按照惯例,每个流几乎都 应该 正确关闭。)

  • 本文向大家介绍React组件命名推荐的方式是哪个?为什么不推荐使用displayName?相关面试题,主要包含被问及React组件命名推荐的方式是哪个?为什么不推荐使用displayName?时的应答技巧和注意事项,需要的朋友参考一下 [react] React组件命名推荐的方式是哪个?为什么不推荐使用displayName?

  • 问题内容: 我们可以通过两种不同的方式在JavaScript中执行函数表达式: 命名函数表达式(NFE) : 匿名函数表达式 : 而且两个都可以用调用。我真的看不到为什么/何时应该使用匿名函数以及何时应该使用命名函数表达式。他们之间有什么区别? 问题答案: 对于匿名函数表达式,该函数是匿名的从字面上看,它没有名称。您要为其分配变量的变量具有名称,但是该函数没有。 _(更新:这在ES5中是正确的。从