Почему мне нужно использовать redux-persist с Asyncstorage?

Сначала мое приложение RN использовало только AsyncStorage для хранения моих параметров аутентификации для пользователя.

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

Итак, я реализовал Redux и Redux-thunk. Он работал нормально, но я заметил кое-что, что меня заинтриговало. Когда я обновляю свое приложение, я заметил, что мое состояние redux не сохраняется.

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

Поэтому мне пришлось реализовать redux-persist с помощью AsyncStorage.

Мой вопрос: почему мне нужно реализовать redux-persist в моем приложении, ориентированном на реакцию, когда AsyncStorage уже по определению

простая, незашифрованная, асинхронная, постоянная система хранения ключей и значений, глобальная для приложения.

?

Спасибо за ваше объяснение


person Louis Lecocq    schedule 08.11.2018    source источник
comment
Взгляните на этот ответ на который я выделил некоторые ключевые моменты   -  person Pritish Vaidya    schedule 08.11.2018


Ответы (2)


  1. Redux предоставляет вам методологию передачи некоторых данных (состояния) в вашем приложении. Другими словами, вы можете использовать согласованный поток данных (действия, создатели действий и редукторы) для обмена данными между различными компонентами вашего приложения.

  2. Эти данные (состояние) хранятся в памяти. Он доступен, пока работает ваше приложение. Если приложение закрыто, вы его потеряете.

  3. AsyncStorage сохраняет данные в LocalStorage. Когда приложение снова запускается, вы можете получить оттуда сохраненные данные, чтобы предоставить пользователю доступ к тому состоянию, в котором оно находилось до закрытия.

  4. Между Redux и AsyncStorage нет зависимости. Не все данные (состояние), которыми управляет Redux, нужно сохранять с помощью AsyncStorage. Не всеми данными, сохраняемыми AsyncStorage, нужно управлять (перед их сохранением) с помощью Redux.

  5. Redux и AsyncStorage - это два совершенно разных инструмента, которые имеют разные цели. Их можно использовать вместе или по отдельности.

  6. Redux-persist - это инструмент, который использует AsyncStorage для хранения «состояния» (или его части), которым управляет Redux. Если вам не нужно сохранять это «состояние» между сеансами приложения, вы можете использовать AsyncStorage для сохранения только того, что вам нужно, например только токен входа пользователя.

person Bilal Abdeen    schedule 16.07.2019

Согласно документам:

Рекомендуется использовать абстракцию поверх AsyncStorage вместо непосредственно AsyncStorage для чего-либо, кроме легкого использования, поскольку она работает глобально.

Redux-persist - это та абстракция, которая идет поверх AsyncStorage. Он обеспечивает лучший способ хранения и извлечения более сложных данных (например, у redux-persist есть persistReducer (), persistStore ()). Кроме того, AsyncStorage по определению является просто механизмом хранения. Redux-persist реализует эти полезные вышеупомянутые функции поверх любого выбранного вами механизма хранения (https://github.com/rt2zz/redux-persist#storage-engines); его не обязательно использовать с AsyncStorage.

person this.Chris    schedule 17.07.2019