#sqlite #react-native #redux #realm #asyncstorage
#sqlite #react-native #переопределение #realm #asyncstorage
Вопрос:
Я собираюсь приступить к разработке приложения React Native и полностью убежден в преимуществах управления состоянием приложения с помощью Redux, однако я хотел бы сделать данные приложения доступными в автономном режиме, используя Realm для постоянного хранения. Мне интересно, как Redux будет работать с Realm?
Приложение, которое я разрабатываю, будет извлекать большой объем данных JSON через RESTful API, а затем я хотел бы сохранить эти данные в локальном хранилище — Realm кажется отличным вариантом для этого. Однако я не уверен в том, как база данных Realm будет существовать в Redux store? Должно ли оно существовать вне хранилища? Является ли использование Realm в приложении на основе Redux каким-либо противоречием?
Я хорошо поискал статьи, описывающие использование Realm или других вариантов хранения (Asyncstorage или SQLite) для больших наборов данных с Redux, и смог найти мало информации.
Комментарии:
1. Почему бы не определить действия ЗАГРУЗКИ / СОХРАНЕНИЯ, которые фактически выполняют асинхронные вызовы базы данных realm для загрузки / сохранения нужных фрагментов данных. Вроде как обращаться с базой данных th realm как с другим сервисом, потому что вы не можете загрузить очень большие объемы данных за один раз.
2. Могу я спросить, насколько велико слово «большой»?
3. привет, у меня похожая проблема: я извлекаю и отображаю данные из базы данных Firebase в реальном времени в приложении react native как для iOS, так и для Android. Моя база данных большая (она содержит более 14400 строк), и для меня обязательно отображать все эти данные, даже если нет подключения к Интернету. Итак, я думал о создании jSON-файла, который я читал бы и записывал в данные всякий раз, когда нет соединения, но потом я нашел Realm. Так вы думаете, это соответствует моим потребностям? я также использую Redux в своем приложении, будет ли у него противоречие в моем приложении? Спасибо
4. В этом выпуске redux-persist обсуждается этот конкретный вопрос. Я не думаю, что это произойдет
Ответ №1:
Хранилище redux хорошо, когда у вас есть только компоненты react, работающие с данными. Хранилище — хороший способ поддерживать состояние вашего приложения. Например, вам не нужно, чтобы Realm сохранял текущий статус входа или флаги, указывающие, пропустил ли пользователь вход в систему. Здесь выигрывает redux store.
С другой стороны, Realm лучше всего подходит, когда вам приходится иметь дело со сложными запросами или хранить большой объем данных. Преимущество наличия Realm в том, что к данным можно легко получить доступ как в ваших компонентах react, так и в не реагирующих компонентах / классах. Realm дает вам преимущество в мониторинге ваших данных с помощью браузера Realm и построении взаимосвязей между вашими моделями. Realm также выигрывает гонку, если вам нужно выполнить какую-либо автономную синхронизацию.
Должно ли оно существовать вне хранилища — Да.
Является ли использование Realm в приложении на основе Redux каким-то противоречием — это зависит от того, для чего вы используете хранилище.
Комментарии:
1. Спасибо за ваш отличный ответ 🙂 С момента написания этого вопроса я намного лучше понимаю, что такое redux и как он используется, и я полностью согласен с вашими заявлениями выше. Я все еще не совсем уверен, нужно ли мне использовать Realm или будет ли хранилище Redux достаточным. Я подозреваю, что более позднее для моего варианта использования. Еще раз спасибо.
2. Мы принимаем аналогичное решение — приняли ли вы окончательное решение, и если да, довольны ли вы выбором? Мы уже в некоторой степени внедрили Realm, но обнаружили, что это добавляет много накладных расходов нашему проекту, и рассматриваем возможность его удаления. Мне просто интересно, насколько офлайн важен для многих мобильных приложений — особенно потому, что наше приложение ecom, а не то, что люди когда-либо ожидали делать офлайн.
3. Я являюсь соучредителем clockit.io . Здесь, в clockit, мы сохраняем географическое местоположение пользователей в фоновом режиме как часть автономного отслеживания местоположения. Redux против Realm полностью зависит от требований вашего приложения. Если вы используете ecom, использование realm приведет к накладным расходам, если у вас нет особых требований к автономному хранилищу.
4. По моему скромному мнению, Redux и Realm не должны быть эксклюзивными друг для друга. Это всего лишь вопрос сортировки разных уровней своего приложения. React и Redux в основном находятся на уровне представления, где хранилище Redux (даже если оно названо хранилищем) не является и не должно быть устройством сохранения любого рода. Redux store просто хранит различные переменные, чтобы компоненты пользовательского интерфейса вели себя соответствующим образом. С другой стороны, Realm решает проблемы на уровне сохранения. Следует извлекать данные и отображать их с помощью React и Redux, а также кэшировать их в автономном режиме с помощью Realm в соответствии со своей бизнес-логикой.
5. тогда предлагает ли сама Realm некоторые преимущества Redux? то есть, предлагает ли он собственный способ автоматического обновления компонентов пользовательского интерфейса при изменении данных?