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])
? - person Brian Thompson   schedule 24.01.2020