работало и в офлайне (а потом синхронизировалось при появлении сети) обязательно использовать что-нибудь типа SQL lite или можно просто текущий стейт сохранять на диск? При условии, что данных относительно много (скажем десять таблиц, в каждой до 2000 значений)
20 000 элементов - это не так уж много (особенно если там преимущественно числа а не строки с абзацами текста). если у вас redux можете взять redux-persist, он по умолчанию в AsyncStorage конфигурируется, но при необходимости можно и в realm, например, или вообще по частям разбить и в разные хранилища складывать. сам asyncstorage (на android) тоже поверх sqlite работает только учитывайте что на android у asyncstorage по умолчанию ограничение 6 мб (можно увеличить) а redux-persist при дефолтной настройке всё пишет в один ключ (но можно для разных редюсеров настраивать отдельные ключи https://github.com/rt2zz/redux-persist#nested-persists). соответственно у sqlite это будет одно поле с ограничением по максимальной длине строки.
Мне вот больше интересно, как оффлайн ферст подход в архитектуре строится. Не видели никаких статей хороших? Мне никогда не приходилось таким заниматься, но интересно
я делаю через amplify datastore
это деталь реализации
а насколько такое кол-во элементов будет влиять на запуск приложения? по идее каждый раз при запуске редакс поддятигавает это состояние
да, оно будет при rehydrate попадать в redux поэтому и уточнил - для чисел это не так критично. если же там абзацы текста - это может быть неоптимально и лучше другое решение посмотреть
да, но там и архитектура не нужна, сервис сам все делает
это аналог firebase db ?
нет, для db там есть отдельная штука
но он тоже платный?
да, но Free Tier есть
смотреть в направлении статей про оптимистичный UI + стратегии синхронизации данных и разрешения конфликтов и состояний (на фронте и бэке). можно начать вот с этого https://habr.com/ru/company/productivity_inside/blog/317664/ https://habr.com/ru/post/319392/ https://github.com/redux-offline/redux-offline#3-decorate-actions-with-offline-metadata (не привязываясь к redux, сам подход) и вот тут есть про один из вариантов реализации обновления данных (и возможных стратегий при возникновении конфликтов) при многопользовательской работе, но концептуально при разруливании онлайн/офлайн событий одного пользователя примерно те же вопросы будут https://youtu.be/IWkQxg6RQ-A?t=11039
Обсуждают сегодня