Изменение состояния, сохраняющегося при уменьшении, при разработке

#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.