reactjs - 将数组传递给 useEffect 依赖列表

标签 reactjs react-hooks

每 5 秒长轮询一次有一些数据,我希望我的组件在每次数组的一项(或数组长度本身)发生变化时调度一个 Action 。
当将数组作为依赖项传递给 useEffect 时,如何防止 useEffect 进入无限循环,但如果任何值发生变化,仍然设法调度一些 Action ?

useEffect(() => {
  console.log(outcomes)
}, [outcomes])

在哪里 outcomes是一个 ID 数组,例如 [123, 234, 3212] .数组中的项目可能会被替换或删除,因此数组的总长度可能(但不必)保持不变,因此通过 outcomes.length因为依赖并非如此。
outcomes来自reselect的自定义选择器:
const getOutcomes = createSelector(
  someData,
  data => data.map(({ outcomeId }) => outcomeId)
)

最佳答案

您可以通过JSON.stringify(outcomes)作为依赖列表:

阅读更多 here

useEffect(() => {
  console.log(outcomes)
}, [JSON.stringify(outcomes)])

关于reactjs - 将数组传递给 useEffect 依赖列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59467758/

相关文章:

reactjs - 在 react 导航 v5.x 中隐藏内部屏幕的底部导航

javascript - 如何自定义嵌套组件?

javascript - 使用 Enzyme 测试组合的 Reactjs 组件

reactjs - 期望 SWR 库返回缓存数据但没有发生

javascript - React.js : Find a string in a string and make it clickable if found

javascript - React.js : Passing nested props into React. 创建元素

javascript - React - 从 render() 调用异步函数

javascript - 在异步回调上设置状态时防止 "React state update on unmounted component"警告

javascript - React hooks - setState 不更新状态属性

javascript - 使用多个键过滤数组