问题标签 [use-effect]

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 投票
1 回答
340 浏览

reactjs - 使用 Vimeo API 反应 useEffect 和迭代数组

我有一系列尝试使用 vimeo API 来获取四个缩略图 jpg。我有一系列视频 ID

我正在使用 setState 导入和使用数组

我有一个单独的状态,我想存储缩略图数据:

我希望能够遍历 useEffect 挂钩内的每个 vimeo id。我正在使用 axios 之类的东西:

但是这段代码我得到了以下错误:

解析错误:不能在异步函数之外使用关键字“等待”

有什么想法吗?谢谢。

0 投票
1 回答
1681 浏览

javascript - 如何设置 useEffect 以在第一次使用 eslint-react-hooks 渲染时从 API 获取数据?

我需要调用两个函数来仅在第一次渲染时获取数据。我在这个项目上使用了 react-hooks。所以代码看起来像这样:

fetchAfetchB是 redux 执行的操作,用于在 reducer 上发出请求和保存数据。
然后我在项目中添加了eslint-react-hooks。现在 eslint 警告我

Blockquote React Hook useEffect 缺少依赖项:'props'。包括它或删除依赖数组。但是,当任何道具发生变化时,“道具”会发生变化,因此首选的解决方法是在 useEffect 调用之外解构“道具”对象,并在 useEffect 中引用那些特定的道具。

// eslint-disable-next-line react-hooks/exhaustive-deps是通过在 useEffect 依赖项之前应用到行来做到这一点的唯一方法吗?

0 投票
2 回答
6329 浏览

javascript - React Hooks:useState with onClick 仅更新第二次单击按钮?

编辑:忘记了一个重要部分 - 如果您单击 Jeff A. Menges 旁边的按钮并检查控制台日志,这很明显。

代码的重要部分是按钮代码的onClick中的“setFullResults(cardResults.data.concat(cardResultsPageTwo.data))”行。我认为它应该将 fullResults 设置为我告诉它的任何内容......除非它在您第一次单击它时不起作用。每次之后,它都会起作用,但不是第一次。这对下一组来说会很麻烦,因为我无法映射到未定义的数组,而且我不想告诉用户只需单击按钮两次才能出现实际的搜索结果。

我猜 useEffect 会起作用,但我不知道如何编写它或将它放在哪里。它显然不能在 App 功能组件的顶部工作,但是我尝试将它放在其他任何地方都会给我一个错误。

我已经尝试过很多地方推荐的“this.forceUpdate()”作为快速修复(但建议不要使用 - 但我已经尝试了好几个小时),但是“this.forceUpdate()”不是无论我把它放在哪里,它都不是一个功能。

请帮助我在第一次单击此按钮时使其正常工作。

CodesAndBox:https ://codesandbox.io/embed/compassionate-satoshi-iq3nc?fontsize=14

0 投票
0 回答
172 浏览

reactjs - 在开玩笑测试中安装组件之前运行的 useEffect

useEffect 似乎在安装组件之前运行,当我对渲染中的元素执行 document.getElementsByClassName 时,它​​是未定义的。它不是有条件地渲染或任何东西。

我正在使用最新的笑话,酶配置了适配器 16。有谁知道发生了什么?

从我所看到的正确配置它,没有错误

我希望 useEffect 在渲染后运行,但由于某种原因该组件尚未安装

0 投票
2 回答
4364 浏览

reactjs - 我们可以在 useEffect 中使用函数作为第二个参数吗

我有以下功能:

我有以下内容useEffect

现在 react 给了我一个警告:

React Hook useEffect 缺少依赖项“handleEnterPress”。

handleEnterPress当我们添加第二个参数数组时有什么区别?

0 投票
6 回答
26761 浏览

javascript - React Hook "useState" 在函数 "setResults" 中被调用,它既不是 React 函数组件也不是自定义 React Hook 函数

我正在尝试在作为反应挂钩的功能组件中进行 API 调用,并根据结果重新渲染组件的内容。这是代码:

调用 API 的组件-

这是setResults功能:

我正在尝试获取状态数据并根据数据重新渲染我的组件。这searchUser是调用外部 API 的操作。

  1. 正在调用操作并成功获取数据,searchUser但我不确定为什么状态会更新 - 我收到以下错误 -

React Hook "useState" 在函数 "setResults" 中被调用,它既不是 React 函数组件也不是自定义 React Hook 函数 react-hooks/rules-of-hooks

  1. 作为第二个替代方案,我试图从 searchUser 返回值并在下面的函数中访问它,仍然没有用

我是钩子新手,任何帮助/指针都会有所帮助。

0 投票
0 回答
313 浏览

reactjs - 在 useReducer 调度更改本地状态后获取数据

尝试使用反应钩子重写此方法:

isPerformingAuthAction 是一个组件属性,用于在执行各种操作时禁用按钮。

<Button disabled={state.isPerformingAuthAction} ... />

问题:我正在使用 useReducer 来管理本地状态,而 isPerformingAuthAction 是 reducerState 的一个属性。useReducer 不返回承诺,所以我不能这样做:

我考虑过改用 useState ,但它没有像 this.setState 这样的回调。

我一直在尝试围绕一些 useEffect 方法来获取数据和异步。我对此感到很困惑,但我认为我可以将“isPerformingAuthAction”或reducer的状态作为依赖项,并在组件更改时使用useEffect更新组件,但“isPerformingAuthAction”属性也因其他原因而更改,而不仅仅是auth.signInWithEmailAndPassword(emailAddress, password),但 signUp、signOut 和其他一些。

因此,当“isPerformingAuthAction”更改为 true 时,它​​会禁用按钮,因此用户被迫等待来自服务器的响应。在调用 auth.whatever 之前,我想确保这些按钮被禁用(状态更新/组件用灰色按钮重新渲染)。

0 投票
1 回答
6746 浏览

javascript - React Hooks useEffect,添加依赖触发无限循环

在我的 useEffect 中,我有一个 props 依赖项(setIsValid)。当我将此依赖项添加到 useEffect 时,它会陷入无限循环。

调用子组件时的父级:

在子组件中:

这样代码可以工作,但我总是收到警告。

我想要的是,当状态内的值之一发生变化(转换/重复索引)时,总是会触发验证。

通过从 props 添加 setIsValid() 函数,它可以无限运行。

警告如下所示:

我的问题是,如何在不收到此警告的情况下保持相同的逻辑?

0 投票
3 回答
16165 浏览

reactjs - 在 Context.Consumer 创建的 useEffect 清理函数中取消所有订阅

每次onClick执行时,我都会收到有关内存泄漏的警告消息。如何使用钩子从我的功能组件中的Context.Consumer取消订阅组件?useEffect

我没有找到如何取消订阅 AppContext 的方法。AppContext.unsubsribe()不工作。

浏览器控制台中的错误消息:

警告:无法对未安装的
组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请在 useEffect 清理函数中取消所有订阅和异步任务。在 UserPage 中(由 Context.Consumer 创建) 在 Route 中(由 withRouter(UserPage) 创建) 在 withRouter(LoginPage) 中(由 Context.Consumer 创建) 在 Route 中(由 UserRoute 创建)

0 投票
0 回答
47 浏览

reactjs - 如何在每次 useEffect 调用后阻止状态返回初始状态?

在我的 customHook 中,我有一个 onchange 事件处理程序,它values在下拉菜单中设置所选项目的状态。然后基于 的状态values,我想在我的 useEffect 中每隔几秒获取一些数据。但是,在每次 useEffect 调用之后,都会调用状态的初始值values而不是当前状态。

我尝试在代码中使用 useRef 来提取当前值,但它仍然返回初始值。

我只是希望它返回valuesstate的当前值