首页 > 解决方案 > 将数组传递给 useEffect 依赖列表

问题描述

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

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

其中outcomes是一个 ID 数组,例如[123, 234, 3212]. 数组中的项目可能会被替换或删除,因此数组的总长度可能 - 但不必 - 保持不变,因此outcomes.length不会作为依赖项传递。

outcomes来自reselect的自定义选择器:

const getOutcomes = createSelector(
  someData,
  data => data.map(({ outcomeId }) => outcomeId)
)

标签: reactjsreact-hooks

解决方案


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

在这里阅读更多

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

推荐阅读