Постоянная выборка данных, вызывающая утечку памяти в React - PullRequest
0 голосов
/ 09 января 2020

В компоненте приложения моего приложения React я получаю некоторые данные из оставшегося API. Когда приложение загружается, я выбираю эти данные в функции componentDidMount и сохраняю их в состоянии. Затем в функции componentDidUpdate я извлекаю эти данные и обновляю состояние, когда извлеченные данные отличаются от данных о состоянии.

В результате мое приложение непрерывно выполняет запросы Http, но обновляет состояние только тогда, когда это необходимо. Но когда мое приложение остается открытым в браузере, ресурсы памяти, используемые им, также постоянно увеличиваются, и в конечном итоге мое приложение падает, когда ему не хватает памяти.

Я думаю, что большое количество запросов Http вызывает эту утечку памяти , Но я не знаю, что на самом деле хранится, что использует такое количество памяти. Поскольку я заменяю старые данные извлеченными данными, он не должен использовать этот объем памяти, верно?

Я хочу знать, какие данные используют эту память и как предотвратить утечку памяти такого рода при сохранении обновленных данных в реальном времени. Если мой способ обновления данных в режиме реального времени не подходит, я хочу знать, как это сделать в приложении React.

Я использую Ax ios для выполнения запросов Http.

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Я думаю, что лучшим решением было бы использование сокетов.

0 голосов
/ 10 января 2020

Если вы хотите непрерывно извлекать данные для имитации своего рода мягкого механизма реального времени, который вы могли бы использовать setInterval внутри componentDidMount метода, это намного проще в реализации и понятном для чтения, я думаю.

Не забудьте позвонить clearInterval внутри componentWillUnmount ловушки жизненного цикла. Я использую этот подход в приложении, которое не взаимодействует с пользователями, и поэтому мне нужно получать данные каждые n минут, потому что api не предоставляет конечную точку веб-сокета.

...