Прежде всего, базовая настройка должна быть такой же, с реактивной навигацией или без нее, как описано в документации в store.js
:
import { persistStore, persistCombineReducers } from 'redux-persist'
import storage from 'redux-persist/es/storage' // default:
localStorage if web, AsyncStorage if react-native
import reducers from './reducers' // where reducers is an object of
reducers
const config = {
key: 'root',
storage,
}
const reducer = persistCombineReducers(config, reducers)
function configureStore () {
// ...
let store = createStore(reducer)
return store
// We'll skip persistStore for now
// let persistor = persistStore(store)
//return { persistor, store }
}
Вызов persistStore
закомментирован, как мы сделаем это ниже. Метод persistStore
принимает обратный вызов в качестве третьего аргумента. Обратный вызов выполняется после восстановления/регидратации состояния. Это хорошо, потому что это означает, что мы можем отложить запуск экранов до тех пор, пока состояние не восстановится.
Предположим, у вас есть следующий загрузочный код в App.js:
store = configureStore()
registerScreens(store, Provider)
Navigation.startTabBasedApp({
tabs: [{...},]
})
Теперь мы можем добавить persistStore и обернуть в него ваш загрузочный код следующим образом:
store = configureStore()
persistStore(store, null, () => {
registerScreens(store, Provider)
Navigation.startTabBasedApp({
tabs: [{...},]
})
})
Примечание. В версии 4 вы передаете config вместо null: persistStore(store, config, callback)
person
Leo Lei
schedule
01.01.2018