每 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/