每 5 秒长轮询会产生一些数据,我希望我的组件在每次数组的一项(或数组长度本身)发生变化时调度一个操作。
在将数组作为依赖项传递给 useEffect 时,如何防止 useEffect 进入无限循环,但如果任何值发生变化,仍然设法调度一些操作?
useEffect(() => {
console.log(outcomes)
}, [outcomes])
where 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)])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)