Я использую redux и redux-persist для сохранения и сохранения состояния. В моем приложении мне нужно выбрать экран по умолчанию на основе сохраненного состояния в редуксе.
Например. Если пользователь уже вошел в систему, он не должен снова видеть экран входа в систему, когда открывает приложение. Мне нужно напрямую перейти к следующему экрану.
Но даже если я визуализирую свой компонент в PersistGate, я получаю начальное состояние, определенное в моем редюсере User, и пользователь всегда перенаправляется на экран входа в систему. На экране входа в систему я получаю постоянное состояние. Единственная проблема заключается в том, что я не нахожу способа получить постоянное состояние в файле index.js.
Это мой файл index.js, в который я добавил оператор предупреждения, в котором я получаю начальное состояние, а не постоянное состояние -
import React, { Component } from "react";
import { Provider } from "react-redux";
import { StyleProvider } from "native-base";
import reduxStore from "./setup/Store";
import { PersistGate } from "redux-persist/integration/react";
import Navigator from "./setup/Routes";
import SplashScreen from "react-native-splash-screen";
import Walkthrough from "./screens/Walkthrough/Walkthrough";
export default class Main extends Component {
componentWillMount() {
SplashScreen.hide();
}
render() {
const Login = Navigator("CustomerLogin");
const Profile = Navigator("Profile");
const Home = Navigator("CustomerHome");
return (
<Provider store={reduxStore.store}>
<PersistGate persistor={reduxStore.persistor}>
{alert(JSON.stringify(reduxStore.store.getState().User))}
{reduxStore.store.getState().User.is_logged_in &&
!reduxStore.store.getState().User.is_registered ? (
<Profile />
) : reduxStore.store.getState().User.is_registered ? (
<Home />
) : reduxStore.store.getState().User.walkthrough_visible ? (
<Walkthrough navigation={Login} />
) : (
<Login />
)}
</PersistGate>
</Provider>
);
}
}
а это мой файл Store.js -
import { createStore, applyMiddleware, compose } from "redux";
import storage from "redux-persist/lib/storage"; // defaults to localStorage for web and AsyncStorage for react-native
import Reducers from "./Reducer";
import createSagaMiddleware from "redux-saga";
import rootSaga from "./Sagas";
import { persistStore, persistReducer } from "redux-persist";
const sagaMiddleware = createSagaMiddleware();
const middleWare = [sagaMiddleware];
const persistConfig = {
key: "root",
storage
};
const persistedReducer = persistReducer(persistConfig, Reducers);
// Add the autoRehydrate middleware to your redux store
const store = createStore(
persistedReducer,
compose(applyMiddleware(...middleWare))
);
sagaMiddleware.run(rootSaga);
let persistor = persistStore(store);
// Enable persistence
export default { store, persistor };
Как я могу решить эту проблему?