refs 是否应该列为 useEffect 等的依赖项?

2024-02-11

据我了解, useRef 返回的容器始终相同 - 但在 useEffect 和类似函数中引用它们会导致 eslint exhausive-deps 警告。在这种情况下忽略警告是否安全?有什么好方法可以避免警告堵塞输出日志以及禁用行注释堵塞我的代码?或者我应该将它们放入依赖项列表中以使 eslint 满意?


When useRef首先被调用它创建一个对象current财产。该对象将在后续渲染中保持不变。即:对该对象的引用不会改变。

https://reactjs.org/docs/hooks-reference.html#useref https://reactjs.org/docs/hooks-reference.html#useref

因此,从依赖项数组中省略它是安全的。

请参阅下面的代码(也可以在沙盒链接中找到):

https://codesandbox.io/s/cocky-dhawan-ys267?file=/src/App.js https://codesandbox.io/s/cocky-dhawan-ys267?file=/src/App.js

const someRef = useRef({foo: "bar"});
let x = 1;

useEffect(() => {
  console.log(someRef.current.foo);
  console.log(x);
}, []);              // THERE IS A WARNING HERE FOR THE "x"

eslint/exhaustive-deps只是担心x,而不是someRef.current.foo.

NOTE:我刚刚把x在那里确保警告是由 eslint 触发的。

这背后的原因是useRef与渲染周期无关。我的意思是,它不会重新创建,也不会在每次渲染后自动更新,就像渲染期间创建的状态、道具或变量一样。

您确定收到此警告的原因是useRef?请参阅 CodeSandbox 链接并仔细检查。检查您如何将它们引用到useEffect并检查您的 React 和 Eslint/插件版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

refs 是否应该列为 useEffect 等的依赖项? 的相关文章

  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 使用 React.lazy 时未捕获未定义的错误

    我正在尝试实施基于路由的代码分割 https reactjs org docs code splitting html route based code splitting正如 React 文档中提到的 这是添加延迟实现之前我的应用程序 这
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas

随机推荐

  • Oauth2 PKCE 谁应该生成代码验证器和代码质询

    我正在编写将与某些 Oauth2 提供商集成的客户端应用程序 我将把原生 android 应用程序作为前端 将 spring boot 作为后端 我想将授权代码流与 PKCE 一起使用 我的问题是谁应该生成代码验证程序和代码挑战 我的后端还
  • 提取字符串的前(或后)n 个字符

    我想提取第一个 或最后一个 n字符串的字符 这相当于 Excel 的LEFT and RIGHT 一个小例子 create a string a lt paste left right sep a 1 leftright 我想生产b 一个等
  • Selenium 隐式等待与 Thread.sleep()

    根据 selenium 的说法 隐式等待会在一定时间内轮询 DOM 以查看元素是否出现 我的理解是 它将轮询指定的时间 但如果之前出现过某个元素 那么它将继续 而无需进一步等待 http seleniumhq org docs 04 web
  • PartialFunction orElse 的类型界限是否比应有的更宽松?

    让我们定义一个PartialFunction String String and a PartialFunction Any String 现在 给出定义orElse def orElse A1 lt A B1 gt B that Part
  • Scala下划线解释

    看看这些 scala 片段 如果我们有这样的东西 List List 1 2 List 3 4 List 5 map x gt x size 我们可以将其缩短为 List List 1 2 List 3 4 List 5 map size
  • 哪种排序算法可提供最佳的最坏情况性能?

    对于绝对最坏的情况 最快的已知排序算法是什么 我不关心最好的情况 并且假设有一个巨大的数据集 如果这很重要的话 确保你已经看到这个 可视化排序算法 http www sorting algorithms com 它帮助我决定使用哪种算法
  • Php PDO 函数:lastInsertId 的安全性如何?

    我对 Php PDO 函数 lastInsertID 没有什么困惑 如果我理解正确的话 它会返回插入数据库的最后一个自动增量ID 当我创建注册用户的功能时 当我执行在数据库中插入用户的查询时 我通常会使用此函数 我的问题是 例如 我有一百个
  • 设置JAVA_HOME和JRE_HOME路径

    我被分配了一个 Linux 机器 里面有 java 可用 java version java version 1 7 0 09 icedtea OpenJDK Runtime Environment rhel 2 3 4 1 el6 3 x
  • twitter4j - 如何配置?

    我正在尝试使用编写一个简单的 Twitter 客户端推特4j http twitter4j org 但我似乎无法完成第一步 配置参数 有一个配置页 http twitter4j org en configuration html在网站上说我
  • 我应该在 EDT 中分配/创建 swing 元素吗?

    我应该在 EDT 中创建 swing 元素吗 我在编辑非线程安全图形元素时遇到了并发问题 但我正在创建它们 但它们尚未显示 如果它们很多或需要一些时间来分配 这会冻结 GUI 但不会是吗 下面是我使用 EDT 来显示但不创建 GUI 结构的
  • React-Native:更改 ImageBackground 的不透明度颜色

    我一直在尝试开发下面提到的屏幕 为此 我创建了以下组件 import React Component from react import View Text StyleSheet ImageBackground Image from rea
  • 如何在 ReactiveCocoa 4 中创建自定义信号?

    我有以下设置 GridView包括GridViewCells GridView class GridView UIView var gridViewCells GridViewCell let tapHandler Position gt
  • 分配 RAM 在任务管理器中显示 RAM 使用量的两倍

    进行一些分析 内存和速度 我对 win7 似乎分配的 RAM 恰好是我要求的两倍这一事实感到震惊 请注意 这是我第一次在 win7 上进行此类主动分析 所以我不这样做我真的不知道会发生什么 我在 win7 64 位 下使用 MSVC 的 E
  • 在协程 close() 上运行代码

    我正在编写大量使用协程的代码 并且我希望在关闭时有可靠的行为 假设我有一个协程和一个上下文管理器 from contextlib import contextmanager contextmanager def print context
  • 在 Java 中向大字符串添加前导零

    我目前正在用 Java 制作一个拍卖程序 我正在尝试计算截止日期 但是我的日期一直显示为 7 04 2013 11 22 有没有办法使用 String format 添加前导零到今天为止什么时候是一位数的日期 String timeOne
  • 如何全局定义套接字变量

    我的里面有这段代码socketio文件 在这里我可以使用socket simply import from lodash import mongoose from mongoose exports register server optio
  • Twitterizer - 远程服务器返回错误:(401) 未经授权

    我正在关注瑞奇的Twitter 示例 https stackoverflow com questions 8003959 mvc3 c sharp beginner in twitterizer how to logon user via
  • 以编程方式在 Woocommerce 中创建新订单

    我在 WooCommerce 中以编程方式创建订单时遇到了最困难的时间 我正在使用下面的代码 并且确实创建了订单 但我无法获取添加到订单中的客户信息或产品系列项目 创建的新订单只是作为访客 没有商品 用户信息等 问题似乎是 一旦创建了订单对
  • Node.Js 错误“请求中不存在‘Access-Control-Allow-Origin’标头”

    这个问题和其他问题类似 然而 有一个差异使得它为什么不起作用非常令人困惑 我的 JavaScript 正在调用 6 个 json 文件 并且所有文件都工作正常 在 Node JS 中 我设置了 cors 和 headers 如下所示 var
  • refs 是否应该列为 useEffect 等的依赖项?

    据我了解 useRef 返回的容器始终相同 但在 useEffect 和类似函数中引用它们会导致 eslint exhausive deps 警告 在这种情况下忽略警告是否安全 有什么好方法可以避免警告堵塞输出日志以及禁用行注释堵塞我的代码