【发布时间】:2020-05-11 01:20:13
【问题描述】:
const [allCases, setAllCases] = useState([])
const [myCases, setMyCases] = useState([])
const [sharedCases, setSharedCases] = useState([])
const [favoriteCases, setFavoriteCases] = useState([])
useEffect(()=> {
getData(_id).then(res => {
const favoriteIds = res.data.find(i => i._id === _id).cases.map(x => {
return x._id
})
setAllCases(res.cases.map(x => {
if (favoriteIds.includes(x._id)) {
return { ...x, isfavorite: true }
}
return { ...x, isfavorite: false }
}))
allCases && setSharedCases(allCases.filter(x => x.creator._id !== user._id))
allCases && setMyCases(allCases.filter(x => x.creator._id === user._id))
allCases && setFavoriteCases(allCases.filter(x => x.isfavorite))
})
}, [])
您好,我遇到了无限循环问题。如果我包含括号,则不会填充我的过滤案例。如果我添加另一个 useEffect,即使我没有更改 allCases,我也会遇到无限循环。 (想知道为什么)
如何解决这个异步问题?
【问题讨论】:
-
allCases不会及时更新,以便您使用该效果调用中的值。您必须使用第二个useEffect。至于为什么第二个导致无限循环,我不能说没有看到尝试。您是否将数组引用用作依赖项?}, [allCases])?
标签: javascript reactjs asynchronous react-hooks use-effect