Как сохранить / кэшировать все данные на устройстве для быстрой загрузки и обновления в фоновом режиме при запуске приложения React native?

#android #ios #react-native #redux #react-redux

#Android #iOS #react-native #сокращение #react-redux

Вопрос:

Я использую axios для вызовов API и асинхронное хранилище для хранения некоторых деталей, таких как профиль пользователя и все. Но асинхронное хранилище кажется очень медленным.

Для работы ключевых функций моих приложений требуется Интернет, но на многих экранах будет отображаться контент, который не обновляется в режиме реального времени или всегда. Как сохранить всю эту информацию в локальном режиме, чтобы при запуске нового сеанса приложения на экранах отображалась полная загрузка вместо запроса данных из API и отображения загрузчика, обновление информации может происходить в фоновом режиме. Как и все основные приложения, они не загружают уже загруженный контент, а каким-то образом сохраняют его на самом устройстве, но в то же время позволяют обновлять, если поступает новая информация.

Какая-то база данных в приложении для хранения всей информации будет работать? если да, то как лучше всего использовать Redux, реализацию Axios, которая работает быстро и не так медленно, как асинхронное хранилище?

Комментарии:

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

Ответ №1:

Асинхронное хранилище должно работать нормально. Чтобы реализовать это, вам нужно будет убедиться, что данные API используются только при первом запуске приложения, а не при последующих запусках. Затем добавьте функцию обновления, которая проверяет наличие обновлений. Вот примерная реализация.

  1. Когда приложение загрузится, попробуйте получить ваши данные из локального хранилища. Если это первый запуск, в хранилище ничего нет, поэтому извлеките данные из API.

  2. Как только данные возвращаются. Сохраните его в локальном хранилище для следующего запуска приложения. Отображение данных.

  3. Если данные существуют в локальном хранилище (последующие запуски), вам нужно будет отправить вызов API для получения последних данных. Как только данные вернутся, поместите их в локальное хранилище. Убедитесь, что это не блокирующий вызов. Вам решать, хотите ли вы обновить текущие данные на экране.

Комментарии:

1. Итак, нет необходимости в реализации БД, а асинхронное хранилище выполняет свою работу, просто увеличивая ограничения по размеру?

2. похоже, что на Android существует ограничение в 6 МБ, без ограничений в iOS.

Ответ №2:

Я работал над несколькими проектами, используя библиотеку redux-persist. Короче говоря, он кэширует информацию, которую вы обрабатываете с помощью redux, не беспокоясь о сохранении информации в асинхронном хранилище.

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

Для получения дополнительной информации посетите: https://github.com/rt2zz/redux-persist