Ошибка случайной утечки памяти при переключении на другой компонент с помощью React Router - PullRequest
0 голосов
/ 26 октября 2019

Эта ошибка возникает не каждый раз, но она всплывает достаточно, чтобы беспокоить мое приложение. В настоящее время у меня есть контейнер, который обрабатывает все мои HTTP-запросы, и делает это путем опроса сервера следующим образом:

  componentDidMount(){
    this.timer = setInterval(() => [this.getData(), this.getCustData()], 1000);
  }

  componentWillUnmount(){
    this.timer && clearInterval(this.timer);
    this.timer = false
  }
  getData = () => {
      axios.get('http://localhost:3001/api/v1/pickup_deliveries')
        .then((response) => {
            this.setState({
              apiData: response.data
            })
          })
        .catch((error)=>{console.log(error);});
  }

Я использую React Router, чтобы перейти к другому контейнеру, который также использует HTTP-запрос, но у которого нет ничегоделать с контейнером, который выполняет опрос (я скоро исправлю это с помощью redux, но я еще не реализовал его). По сути, опрос должен (и не прекращается), когда я размонтирую компонент. Проблема в том, что время от времени, когда я переключаюсь на следующий компонент, я получаю ошибку при переходе. Это похоже на то, как будто его улавливают с интервалом в одну секунду, что приводит к краткой утечке памяти.:

index.js:1437 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
    in PickupDeliveriesForm (created by Wrapper)
    in div (created by Wrapper)
    in Wrapper (at PickupDeliveries.js:200)
    in div (at PickupDeliveries.js:197)
    in div (at PickupDeliveries.js:196)
    in PickupDeliveries (created by Context.Consumer)

Это серьезная проблема? Должен ли я беспокоиться об этой случайной утечке памяти, или это происходит с территорией, когда я пытаюсь размонтировать компонент, опрашивающий сервер с setInterval?

...