PersistGate заставляет приложение прекратить рендеринг - PullRequest
0 голосов
/ 28 июня 2019

Я нахожусь в процессе настройки приложения React Native с хранилищем Redux и PersistGate.Хранилище Redux настроено и работает должным образом, но PersistGate заставляет приложение перестать отображать даже первый экран.Без PersistGate приложение прекрасно воспроизводится.

Вот код App.js:

    import React, {Component} from 'react';
    import { Provider } from 'react-redux';
    import { createStore, applyMiddleware } from 'redux';
    import thunk from 'redux-thunk';
    import { persistStore, autoRehydrate } from 'redux-persist';
    import { PersistGate } from 'redux-persist/integration/react';
    import AppNavigator from './AppNavigator';
    import SplashScreen from 'react-native-splash-screen';
    import allReducers from './store/reducers/index';

    const store = createStore(
      allReducers,
      applyMiddleware(thunk),
      //compose(applyMiddleware(thunk), autoRehydrate()),
    );

    // This line makes store persistent.
    const persistor = persistStore(store);

    type Props = {};
    export default class App extends Component<Props> {
      componentDidMount() {
        if (SplashScreen) {
          SplashScreen.hide();
        }
      }
      render() {
        return (
          <Provider store={ store }>
            <PersistGate persistor={persistor}>
                <AppNavigator />
            </PersistGate>
          </Provider>
        );
      }
    }

Индексный файл редуктора:

    import {combineReducers} from 'redux';
    import userReducer from './UserReducer';
    const allReducers= combineReducers({
      user: userReducer,
    });
    export default allReducers;

Если я удаляюТег <PersistGate persistor={persistor}> из файла App.js, приложение работает нормально.Но когда я использую PersistGate, я просто вижу белый экран без сбоев.

Чего мне не хватает, что вызывает этот странный вывод?

1 Ответ

1 голос
/ 28 июня 2019

Вам также необходимо вызвать функцию persistReducer:

const persistConfig = {
  key: 'root',
  storage,
}

const persistedReducer = persistReducer(persistConfig, rootReducer)
let store = createStore(persistedReducer)
let persistor = persistStore(store)

Больше информации в их документе: https://github.com/rt2zz/redux-persist

...