问题标签 [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.
reactjs - react hooks(useEffect)无限循环说明
这个问题与我之前的问题有关。我写了两个自定义钩子。第一个是useFetchAccounts
其工作是获取有关用户帐户的一些数据,如下所示:
这个钩子没什么特别的,只是获取帐户的 ID。
现在我有另一个钩子,useFetchBalancesWithIDs(account_ids, accounts_loaded)
它意味着从上一步中获取 id 并在帐户已加载时获取这些帐户的余额。它看起来像这样:
如您所见,如果accounts_loaded
为假,它将不会执行提取。我一起使用它们如下:
不幸的是,这会导致无限循环。起作用的是将其更改useFetchBalancesWithIDs
为:
它在其中执行 ids 提取。我这样使用它:
运行得很好。所以问题似乎与从 App 组件中提取 ID 有关,这似乎一直在触发useFetchBalanceWithIDs
,即使account_ids
不改变值。有人可以帮助解释这种行为吗?我可以使用useFetchBalanceWithAccounts
,但我想了解为什么useFetchBalanceWithIDs
不起作用。谢谢!
javascript - 对 useEffect 感到困惑
我正在构建我的第一个 Custom React Hook,并且对我认为代码的一个简单方面感到困惑:
我传递给useFetch
两个参数:一个 url 和一个headers
包含 AWS Cognito 授权密钥的对象,如下所示:(Authorization: eyJraWQiOiJVNW...
为简洁起见)
当我这样做时,options
对象确实存在于内部附近useFetch
但在useEffect
构造内部它是空的。然而,url
字符串在两种情况下都正确填充。
这对我来说毫无意义。可能有人知道为什么会这样吗?
reactjs - 如何使用 useState 更新初始状态对象的特定属性
考虑在获取一些数据后我需要更新状态的代码,我只需要更新初始状态(clientData)的数据部分:
我怎样才能以及是否可以只更新初始状态的“数据”部分而不必传播它(...clientData
)
reactjs - 为什么我在使用 websocket 时在 useEffect 中有无限循环?
我现在将 weboscket 添加到应用程序中,我必须在添加新用户时尝试更新活动用户数组,但是当我在结果参数 [activeUsersInGallery] 中输入 useEffect 时,然后将请求发送到 webosocket infitiy。我现在不知道为什么。
react-hooks - 为什么我的 useFetch 函数被调用了两次?
我正在尝试使用从 API 端点获取数据的 React Hooks 构建我的第一个函数。代码如下所示。
在我的 React 组件中:
在一个名为requests.js
我导入的文件中:
虽然它有效,但每当我刷新浏览器时,都会对端点进行两次调用。为什么会这样,我怎样才能让它只被调用一次?
reactjs - 如何使用 React hook useEffect 添加事件处理程序取决于状态?
我有一个授权组件,包括另一个组件 - 用户名、密码等字段。我尝试创建反应挂钩 useeffect,我想在“X”keyDown 事件上添加订阅。在这个事件中,我想执行 Authorize() 函数,该函数位于组件主体(不是钩子主体)中,并且取决于授权组件状态。
所以,我发现的唯一解决方案是:
但我认为它不正确,因为这种订阅/取消订阅会在每次用户状态更改时执行。请帮忙。
react-hooks - 使用 UseEffect 调用端点
我正在使用 Robin Wieruch 的出色工作来了解如何调用 API 端点。这是他的一个项目:https ://github.com/the-road-to-learn-react/react-hooks-introduction
下图是他的修改版useDataApiHook-example
。有了它,我连接了两个按钮,然后给了我 3 种查询端点的方法。我选择在所有情况下都使用相同的端点,但用不同的端点对其进行了测试,它似乎工作正常。
我有几个问题:
- 假设我不想在组件加载时调用查询(并且不想在加载时发出 GET 请求)。如何做到这一点?
- 想象一下,按钮 1 和 2 触发的事件实际上分别是对不同 API 端点的调用。例如,按钮 1 可以代表一个调用,以查明刚刚输入的特定用户名是否已经存在。按钮 2 可以代表一个呼叫,以查明刚刚输入的电子邮件地址是否已经存在。在这种情况下,确保正确使用new
data
填充的常见做法是什么?doFetch
如果问题 2 不清楚,让我换一种说法:在所有情况下,data
对象都由useDataApi
. 但是,如果第一次调用useDataApi
是为了填充一个东西,第二次调用是为了填充其他东西,第三次调用是为了再次填充其他东西,那么处理这种逻辑的最佳方法是什么?
reactjs - 多次调用 useEffect - React
我只想在更改时在我的useEffect
方法中执行代码productType
,并且一旦加载页面,我就可以识别 console.log 执行超过 6-7 次,这是我不想要的。
这是我的代码的摘要:
想法是在更改useEffect
时执行代码productType
,我在下拉列表中更改它,如下所示:
所以我想知道为什么当我加载这个视图/模板时,我的控制台中出现了 6-7-8console.logs
之类的null
......
reactjs - React Hook 延迟了 useEffect 触发?
我试图在我的反应钩子中使用 useEffect() 来更新我的道具改变时的状态。但是有一个延迟,并且只有在我再次单击我的钩子中的一个元素后才会触发 useEffect 。我对使用钩子相当陌生,任何帮助将不胜感激。谢谢