Redux-Persist错误:未定义不是函数(正在评估'baseReducer(state,action)')

时间:2018-06-26 18:13:56

标签: javascript react-native redux-persist

在这里使用React Native的新手。我正在使用redux-persist保存一些设置,但出现错误:未定义不是函数(评估'baseReducer(state,action)')

我尝试正确遵循所有说明http://image.intervention.io/getting_started/installation,但仍然收到此错误。任何帮助将不胜感激。

这是我的相关代码

App.js

import React from 'react';
import { Text, View } from 'react-native';
import { Ionicons } from '@expo/vector-icons';
import { Header } from 'react-native-elements';
import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs';
import { SettingsDividerShort, SettingsCategoryHeader, SettingsPicker} from 'react-native-settings-components';
import BookmarksScreen from './screens/BookmarksScreen';
import AuditionsScreen from './screens/AuditionsScreen';
import SettingsScreen from './screens/SettingsScreen';

import { createStore } from 'redux';
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import rootReducer from './reducers/index';

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

const pReducer = persistReducer(persistConfig, rootReducer);

export const store = createStore(pReducer);
export const persistor = persistStore(store);

const MaterialBottomTabNavigator = createMaterialBottomTabNavigator(
  {
    Bookmarks: BookmarksScreen,
    Auditions: AuditionsScreen,
    Settings: SettingsScreen,
  },
  {
    shifting: true,
    initialRouteName: 'Auditions',
    barStyle: {  backgroundColor: 'black' },
  }
);

export default class App extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <PersistGate loading={<ActivityIndicator />} persistor={persistor}>
          <MaterialBottomTabNavigator />;
        </PersistGate>
      </Provider>
    )
  }
}

reducers / index.js

import { combineReducers } from 'redux';
import SettingsReducer from './settings';

const initialState = () => {
  return {
    settings: {
      location: '',
      roleType: '' ,
    }
  }
}

export const rootReducer = combineReducers({
    settings: SettingsReducer,
});

reducers / settings.js

import { SAVE_LOCATION_SETTINGS, SAVE_ROLE_TYPE_SETTINGS} from './../actions/types';

const SettingsReducer = (state = [], action) => {
  switch(action.type) {
    case SAVE_LOCATION_SETTINGS:
      return state.set('settings.location', action.data);
    case SAVE_ROLE_TYPE_SETTINGS:
      return state.set('settings.roleType', action.data);
  }
  return state;
}

export default SettingsReducer;

0 个答案:

没有答案