#reactjs #react-redux #react-router #react-hooks
Вопрос:
Я получаю сообщение об ошибке с предупреждением: Не удается выполнить обновление состояния реакции для размонтированного компонента. Это не операция, но это указывает на утечку памяти в вашем приложении. Чтобы исправить это, отмените все подписки и асинхронные задачи в функции очистки useEffect.
Я использовал очистку в useState, но все равно получаю ошибку.
Вот код:
let isComponentMounted = useRef(false);
useEffect(()=>{
isComponentMounted.current = true;
setLoading(true);
if(isComponentMounted){
async function fetchData(){
const data = await fetch(`/data`)
const res = await data.json();
setLoading(false);
return res
}
fetchData().then((response)=>{
setMovie(response.data.movies[Math.floor(Math.random()*response.data.movies.length-1)])
})
}
return()=>{isComponentMounted.current = false; setMovie()}
},[])
Я новичок в реагировании, это было бы действительно полезно
Комментарии:
1. Перед вызовом проверьте, установлен ли компонент по-прежнему
setMovie
2. Почему вы хотите установить состояние компонента, который будет размонтирован?
3. @TusharShahi Я пытался очистить состояние, так как думал, что это освободит память. Ранее я пытался использовать setState при очистке, но все равно получил ту же ошибку msg
4. Компонент сам размонтируется. Я не думаю, что вам нужно беспокоиться о его состоянии. Очистка должна проводиться до появления внешних ресурсов и таймеров.
5. @TusharShahi хорошо,но как избавиться от сообщения об ошибке ресурса ?