最佳答案
每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)
)