#reactjs #react-native #redux #redux-persist
#reactjs #react-native #сокращение #redux-сохраняется
Вопрос:
Я использую redux-persist для сохранения моей стадии redux в AsyncStorage в react native. Поскольку это новое приложение, я продолжаю изменять структуру моего исходного состояния redux, чтобы приспособить новые функции или исправления. Но когда я перезагружаю приложение, оно переопределяется старым состоянием, которое сохранялось с помощью redux-persist (регидратация).
Как мне получить redux-persist для сохранения нового initialState без необходимости записывать миграции в моей среде разработки?
Ответ №1:
Я добавил компонентную функцию, которая очищает сохраняемое состояние и немедленно перезагружает приложение. Функция вызывается кнопкой, которая доступна только в среде разработки.
import { persistor } from '../../AppContainer' // adjust this line for you
import RNRestart from 'react-native-restart'
clearPersistedState = () => {
persistor.purge()
RNRestart.Restart() // reload the React Native Bundle
}
Необходимо немедленно перезагрузить приложение, потому что, если какое-либо действие redux будет вызвано после очистки сохраняемого состояния, redux-persist снова сохранит старое начальное состояние (которое все еще находится в оперативной памяти).
Ответ №2:
Если вы пытаетесь адаптировать новые функции, а не удалять то, что требуется вашим представлениям, тогда установите automergelevel равным 2, поскольку это переопределит только существующие ключи, а все новое, что вы добавите, будет просто добавлено с предоставленным вами initialState.