问题标签 [eslint-plugin-react-hooks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
131 浏览

reactjs - 我无法删除使用 react 制作的待办事项列表中的项目,请帮助我解决代码中的错误

以下是我的待办事项列表代码,我无法在删除项目功能中删除列表中的项目,请帮助我解决错误。

0 投票
0 回答
65 浏览

reactjs - 与 useCallback 不一致的 linter 警告

在此屏幕截图中,我们可以看到两个警告react-hooks/exhaustive-deps

在此处输入图像描述

  1. React Hook useCallback 有一个不必要的依赖:'b'。排除它或删除依赖数组。

  2. React Hook useCallback 收到一个依赖未知的函数。而是传递一个内联函数。

然而 L14useCallback(noop, [c])没有使用它的c依赖,也不是一个内联函数,但是 linter 没有发出任何警告。为什么?

0 投票
1 回答
37 浏览

reactjs - React 的 useEffect 依赖数组是反模式吗

我对 React 中的 useEffect 和依赖数组有疑问。据我了解 useEffect 可以处理状态变化的副作用。

假设我正在创建一个像 Zoom 这样的应用程序。因此,对于接收方呼叫,当名为“callState”的局部状态变量等于应答时,我有处理 useEffect 中呼叫请求的代码:

这里的问题是我只想在 callState 更改时调用 answerCall useEffect 但它确实需要使用许多状态变量。我有条件if (!remoteRequest || callState !== CallState.Answering) return,所以如果 callState 没有得到回答,我会阻止 useEffect 运行,但是我不断调用 useEffect 似乎很奇怪,它实际上只意味着在 callState 更改时运行,如果其中一个状态我需要一个条件来提前保释变量,例如 localStream 更改(例如,如果我将流更改为后置摄像头)。看起来这种设计很容易出现错误和错误,即使它更具声明性。

我添加了 console.log('answering') 来说明我的观点。如果用户登录,callState 设置为挂断,当前用户刷新属性,localStream 更改.. 在所有这些情况下,它会将“应答”记录到控制台。

我可以添加 '// eslint-disable-next-line react-hooks/exhaustive-deps' 并且只添加 callState 但有很多文章对此提出警告:

https://dev.to/aman_singh/why-effects-should-t-lie-about-their-dependencies-1645

https://betterprogramming.pub/stop-lying-to-react-about-missing-dependencies-10612e9aeeda

我在这里想念什么?