【发布时间】:2021-04-13 02:50:20
【问题描述】:
我有一个mediaType 变量,当它改变时,currentSelectedMedia 需要被过滤。在这种情况下,我会收到 react-hooks/exhaustive-deps 警告。
/**
data example:
currentSelectedMedia = [
{ id: '1', mediaType: '1', name: 'facebook'},
{ id: '2', mediaType: '2', name: 'twitter'}
]
**/
useEffect(() => {
setCurrentSelectedMedia(currentSelectedMedia.filter(item => item.mediaType === mediaType))
}, [mediaType])
如果我将currentSelectedMedia添加到依赖数组中,就会导致无限循环。
警告是正确的,死循环的原因也很明显。 但是我怎样才能逃脱呢?
【问题讨论】:
-
为什么要把
currentSelectedMedia放在依赖列表中?你这样做是为了达到什么目的?认为我们需要更多背景信息。 -
您能否发布
id的值以及mediaDataMap包含哪些数据? -
@Jayce444 我想避免警告,
react-hooks/exhaustive-deps -
@Yadab 我编辑示例,不关心
mediaDataMap,这是不相关的 -
只需使用
currentSelectedMedia.filter(item => item.mediaType === mediaType)渲染内容,您真的不需要使用 useEffect,因为您在mediaType更改时调用它
标签: reactjs react-hooks