React native 重新加载时,Redux保持不与expo保持一致

React native 重新加载时,Redux保持不与expo保持一致,react-native,redux,expo,asyncstorage,redux-persist,React Native,Redux,Expo,Asyncstorage,Redux Persist,我正在使用以下技术堆栈 自然反应 博览会 重演 重复出现 我在这里也尝试过文章、文档和问题,但没有帮助。这根本就不是坚持。我正在使用emulator并只运行expo。一旦我关闭应用程序并重新加载expo客户端,它就不会继续运行并要求我再次登录。 我也尝试过使用异步存储,但仍然不起作用 这是我的密码: index.js import thunk from "redux-thunk"; import AsyncStorage from "@react-native-co

我正在使用以下技术堆栈

  • 自然反应
  • 博览会
  • 重演
  • 重复出现
  • 我在这里也尝试过文章、文档和问题,但没有帮助。这根本就不是坚持。我正在使用emulator并只运行expo。一旦我关闭应用程序并重新加载expo客户端,它就不会继续运行并要求我再次登录。 我也尝试过使用异步存储,但仍然不起作用

    这是我的密码:

    index.js

    import thunk from "redux-thunk";
    import AsyncStorage from "@react-native-community/async-storage";
    import ExpoFileSystemStorage from "redux-persist-expo-filesystem"
    // import storage from 'redux-persist/lib/storage';
    import { createStore, applyMiddleware, compose } from "redux";
    import { persistStore, persistReducer } from "redux-persist";
    
    import rootReducer from "./reducers/rootReducer";
    import logger from "redux-logger";
    
    const persistConfig = {
      key: "root",
      storage: ExpoFileSystemStorage,
      whitelist: ["authReducer"],
    };
    
    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
    const persistedReducer = persistReducer(persistConfig, rootReducer);
    
    const store = createStore(
      persistedReducer,
      composeEnhancers(applyMiddleware(thunk, logger))
    );
    
    let persistor = persistStore(store);
    
    export { store, persistor };
    
    import React from "react";
    import { Provider } from "react-redux";
    import { PersistGate } from "redux-persist/integration/react";
    import { AppLoading } from "expo";
    import { useFonts } from "@use-expo/font";
    import { NavigationContainer } from "@react-navigation/native";
    import { ThemeProvider } from "react-native-elements";
    
    import { theme } from "./constants/ThemeConfiguration";
    import { store, persistor } from "./store";
    import RootNavigator from "./navigators/RootNavigator";
    
    
    export default (App) => {
      let [fontsLoaded] = useFonts({
        "Lato-Regular": require("./assets/fonts/Lato-Regular.ttf"),
      });
    
      if (!fontsLoaded) {
        return <AppLoading />;
      } else {
        return (
          <Provider store={store}>
            <PersistGate loading={null} persistor={persistor}>
              <ThemeProvider theme={theme}>
                <NavigationContainer>
                  <RootNavigator />
                </NavigationContainer>
              </ThemeProvider>
            </PersistGate>
          </Provider>
        );
      }
    };
    
    import thunk from "redux-thunk";
    import AsyncStorage from "@react-native-community/async-storage";
    import { createStore, applyMiddleware, compose } from "redux";
    import { persistStore, persistReducer } from "redux-persist";
    
    import rootReducer from "./reducers/rootReducer";
    import logger from "redux-logger";
    
    const persistConfig = {
      key: "auth",
      storage: AsyncStorage,
    };
    
    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
    const persistedReducer = persistReducer(persistConfig, rootReducer);
    
    const store = createStore(
      persistedReducer,
      composeEnhancers(applyMiddleware(thunk, logger))
    );
    
    let persistor = persistStore(store);
    
    export { store, persistor };
    
    app.js

    import thunk from "redux-thunk";
    import AsyncStorage from "@react-native-community/async-storage";
    import ExpoFileSystemStorage from "redux-persist-expo-filesystem"
    // import storage from 'redux-persist/lib/storage';
    import { createStore, applyMiddleware, compose } from "redux";
    import { persistStore, persistReducer } from "redux-persist";
    
    import rootReducer from "./reducers/rootReducer";
    import logger from "redux-logger";
    
    const persistConfig = {
      key: "root",
      storage: ExpoFileSystemStorage,
      whitelist: ["authReducer"],
    };
    
    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
    const persistedReducer = persistReducer(persistConfig, rootReducer);
    
    const store = createStore(
      persistedReducer,
      composeEnhancers(applyMiddleware(thunk, logger))
    );
    
    let persistor = persistStore(store);
    
    export { store, persistor };
    
    import React from "react";
    import { Provider } from "react-redux";
    import { PersistGate } from "redux-persist/integration/react";
    import { AppLoading } from "expo";
    import { useFonts } from "@use-expo/font";
    import { NavigationContainer } from "@react-navigation/native";
    import { ThemeProvider } from "react-native-elements";
    
    import { theme } from "./constants/ThemeConfiguration";
    import { store, persistor } from "./store";
    import RootNavigator from "./navigators/RootNavigator";
    
    
    export default (App) => {
      let [fontsLoaded] = useFonts({
        "Lato-Regular": require("./assets/fonts/Lato-Regular.ttf"),
      });
    
      if (!fontsLoaded) {
        return <AppLoading />;
      } else {
        return (
          <Provider store={store}>
            <PersistGate loading={null} persistor={persistor}>
              <ThemeProvider theme={theme}>
                <NavigationContainer>
                  <RootNavigator />
                </NavigationContainer>
              </ThemeProvider>
            </PersistGate>
          </Provider>
        );
      }
    };
    
    import thunk from "redux-thunk";
    import AsyncStorage from "@react-native-community/async-storage";
    import { createStore, applyMiddleware, compose } from "redux";
    import { persistStore, persistReducer } from "redux-persist";
    
    import rootReducer from "./reducers/rootReducer";
    import logger from "redux-logger";
    
    const persistConfig = {
      key: "auth",
      storage: AsyncStorage,
    };
    
    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
    const persistedReducer = persistReducer(persistConfig, rootReducer);
    
    const store = createStore(
      persistedReducer,
      composeEnhancers(applyMiddleware(thunk, logger))
    );
    
    let persistor = persistStore(store);
    
    export { store, persistor };
    

    我把它修好了。在任何文档或文章中都没有。问题在于persistConfig在这里是。它应该是我们想要保留的减速器的名称。在我的例子中,它是auth

    更新的persistConfig将如下所示:

    const persistConfig = {
      key: "auth",
      storage: AsyncStorage,
    };
    

    你能粘贴你的rootReducer文件吗?已添加。我自己也把它修好了。你能粘贴“/reducers/rootReducer”(上面引用的rootReducer.js文件)吗。谢谢。如果我想持久化整个“combinedReducer”,你知道该放什么键吗?我还没有尝试过,但我想应该为这个combinedReducer设置一个键,并在persistConfig中使用它。