Почему я получаю сообщение об ошибке «Предупреждение: Не удается выполнить обновление состояния реакции для размонтированного компонента. Это не операция, но это указывает на память «

#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 хорошо,но как избавиться от сообщения об ошибке ресурса ?