在这里使用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;