React,Redux,Thunk,Persist:typeError store.getState不是函数。 (在“ store.getState()”中,store.getState'未定义)?

问题描述 投票:1回答:1

我正在尝试在React Native应用中设置redux,redux-thunk,redux-persist,我在做什么错?

configStore.tsx

import {createStore} from 'redux';
import {rootReducer} from './reducers';
import {persistStore, persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import AsyncStorage from '@react-native-community/async-storage';
import {applyMiddleware} from 'redux';
import thunk from 'redux-thunk';

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

const persistedReducer = persistReducer(persistConfig, rootReducer);

export default () => {
  let store = createStore(persistedReducer, applyMiddleware(thunk));
  let persistor = persistStore(store);
  return {store, persistor};
};

App.tsx

import React, {useState} from 'react';
import Drawer from './PreApp';
import {View, Text, Button, StyleSheet} from 'react-native';
import {Provider} from 'react-redux';
import store from './redux/configureStore';
import {PersistGate} from 'redux-persist/integration/react';
import persistor from './redux/configureStore';

const App = () => {
  return (
    <Provider store={store}>
      <Drawer />
    </Provider>
  );
};
export default App;

这是我收到的错误消息:enter image description here

react-native redux redux-thunk redux-persist
1个回答
2
投票

您正在从configureStore导出函数,首先需要调用它以获取storepersistor,然后您可以将其传递给ProviderPersistGate

import React, {useState} from 'react';
import Drawer from './PreApp';
import {View, Text, Button, StyleSheet} from 'react-native';
import {Provider} from 'react-redux';
import createStore from './redux/configureStore'; // imported the default function
import {PersistGate} from 'redux-persist/integration/react';

const {store, persistor} = createStore(); // destructed the result to get the store & persistor

const App = () => {
  return (
    <Provider store={store}>
      {/*Wrap the main component PersistGate*/}
      <PersistGate loading={<Text>Loading...</Text>} persistor={persistor} > 
        <Drawer />
      </PersistGate>
    </Provider>
  );
};
export default App;
© www.soinside.com 2019 - 2024. All rights reserved.