reactjs - 将数组传递给 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)
)
解决方案
JSON.stringify(outcomes)
您可以作为依赖列表传递:
在这里阅读更多
useEffect(() => {
console.log(outcomes)
}, [JSON.stringify(outcomes)])
推荐阅读
- reactjs - 为什么我应该使用 Ant Design 而不是其他前端库
- ios - 将设备升级到 iOS12 后应用程序崩溃
- java - Gradle 在使用 annotationProcessor 时引发错误:以下任务之间的循环依赖关系
- javascript - 材质 ui 日期选择器显示选定值 -1
- sum - 使用 GAMS 中的 sum 函数对变量子集求和
- javascript - 仅使用一次替换
- java - 在 Java 中将 blob 附加/嵌入到 PDF
- sql - where 条件 - ORA-01861: 文字与格式字符串不匹配
- python-3.x - Display Networkx 2.2 MultiGraphs 使用 graphviz 或 pydot
- sql - 按 charindex >0 和 SQL concat 排序