React Hooks-0与空数组作为useEffect中的第二个参数

StefanBob:

我看到有人在useEffect的第二个参数中使用0而不是空数组。

所以代替

useEffect(() => {
    console.log('Run once');
}, []);

它是

useEffect(() => {
    console.log('Run once');
}, 0);

它似乎具有相同的效果,所以我想知道他为什么要使用它?

空数组根据您的评估方式被视为0。例如,[] == 0为true,但[] === 0为false。因此,在这种情况下,可能不需要进行严格的比较,如果您使用0,也没关系。

只是在反应文档之后,我将使用一个空数组。

React docs

如果要运行效果并仅将其清除一次(在挂载和卸载时),则可以传递一个空数组([])作为第二个参数。这告诉React您的效果不依赖于props或state的任何值,因此它不需要重新运行。这不是特殊情况,它直接取决于依赖项数组始终如何工作。

我想知道是否0可以在over上使用可能更简洁的二进制参数[],或者使用0是否是不好的做法,或者这无关紧要,[]而只是首选的React约定?

谢谢。

路德维格:

这是useEffect函数的签名

export function useEffect(
  create: () => (() => void) | void,
  deps: Array<mixed> | void | null,
): void {
  const dispatcher = resolveDispatcher();
  return dispatcher.useEffect(create, deps);
}

在这里,您可以看到它仅接受一个Array,void或null,因此对您问题的正确答案是,如果您只想运行一次,则总是发送一个数组

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

当将空数组作为第二个参数传递时,React Hook useEffect缺少依赖项

来自分类Dev

useEffect React挂钩中的第二个参数变体?

来自分类Dev

React功能组件中的第二个参数是什么?

来自分类Dev

即使值(第二个参数)与先前的值相同,我如何执行useEffect-React

来自分类Dev

使用React Hooks在第二个渲染器上进行API调用

来自分类Dev

React.memo第二个参数依赖函数无法按预期工作

来自分类Dev

如何访问react-redux中第二个组件中的存储

来自分类Dev

什么是React.createElement中的第二个参数?为什么大多数情况下它为null?

来自分类Dev

WIX React Native Navigation:堆栈中的第二个屏幕显示在第一个屏幕上方

来自分类Dev

React,2 setstate在相同的功能中:第二个擦除第一个

来自分类Dev

如何在React Native中从第二个屏幕共享或获取一些数据

来自分类Dev

在第二个API中使用第一个API的信息-React

来自分类Dev

返回作为第二个参数传递的数组中第一个参数的索引的函数

来自分类Dev

React Native-第二个API调用未返回值

来自分类Dev

React组件仅在第二个onClick事件上更改状态

来自分类Dev

React / Redux链接第二个API请求并调度

来自分类Dev

For循环仅适用于带有React钩子的第二个循环

来自分类Dev

如何在react native中声明模型类并如何通过使用react导航在第二个屏幕中传递整个模型类

来自分类Dev

React-Native Redux在第一个reducer中起作用,但在第二个中不起作用

来自分类Dev

$ in需要一个数组作为第二个参数,发现:丢失

来自分类Dev

React Admin,基于第一个值的第二个输入过滤器

来自分类Dev

将tr的结果作为awk中的第二个参数传递

来自分类Dev

我的环境中的realpath()不喜欢NULL作为第二个参数?

来自分类Dev

该Prolog谓词中的第二个参数是什么?为什么它是空的?

来自分类Dev

添加第二个<div>时,React JSX表达式必须具有父元素错误

来自分类Dev

带有空数组作为输入的“ useCallback”和没有第二个参数的“ useCallback”之间有什么区别?

来自分类Dev

仅在javascript中传递第二个参数

来自分类Linux

代理中第二个参数的正确用法

来自分类Dev

查找数组中的第二个最小元素

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  3. 3

    OpenJDK的和AdoptOpenJDK的区别

  4. 4

    如何解决npm问题?

  5. 5

    GitHub文件夹上有一个白色箭头

  6. 6

    在python中交互式旋转3D图-Matplotlib-Jupyter Notebook

  7. 7

    在熊猫中每隔一列取行平均值(python)

  8. 8

    未定义:grpc.SupportPackageIsVersion7 grpc.ServiceRegistrar

  9. 9

    TypeScript泛型错误:算术运算的左侧必须为“ any”,“ number”,“ bigint”类型

  10. 10

    无法导入大猩猩/mux(github.com/gorilla/[email protected]:在go.mod中明确要求,但在vendor / modules.txt中未标记为明确)

  11. 11

    tensorflow:仅在可用val_acc的情况下可以保存最佳模型,跳过

  12. 12

    使用moment.js获取不同时区的当前时间

  13. 13

    Nuxt.JS:如何在页面中获取路由URL参数

  14. 14

    如何在k8s中连接到我的mysql pod或mysql的节点?

  15. 15

    java.lang.NoClassDefFoundError:无法初始化类org.bytedeco.javacpp.avutil

  16. 16

    重命名由android 10中的应用程序创建的Mediastore的文件。正在使用Android API 30,但在API 29中显示错误

  17. 17

    Golang time.Parse()得到0001-01-01 00:00:00 +0000 UTC

  18. 18

    “无法上传。请重试。” Google Play控制台上的错误

  19. 19

    requestLegacyExternalStorage在Android 11中不起作用-API 30

  20. 20

    TypeScript TS7015:元素隐式地具有“ any”类型,因为索引表达式不是“ number”类型

  21. 21

    如何处理这个git警告?“不建议在不指定如何协调分歧分支的情况下进行拉动”

热门标签

归档