@mindinventory/react-native-boilerplate
Version:
58 lines (45 loc) • 1.26 kB
text/typescript
import { combineReducers, configureStore } from '@reduxjs/toolkit';
import { useDispatch } from 'react-redux';
import {
FLUSH,
PAUSE,
PERSIST,
PersistConfig,
persistReducer,
persistStore,
PURGE,
REGISTER,
REHYDRATE,
} from 'redux-persist';
import { reduxStorage } from '@src/context';
import { newsData, newsDataName, userData } from './reducers';
const rootReducer = combineReducers({
newsData,
userData,
});
export type RootState = ReturnType<typeof rootReducer>;
const persistConfig: PersistConfig<RootState> = {
key: 'root',
storage: reduxStorage,
whitelist: [newsDataName],
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
const store = configureStore({
devTools: true,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
thunk: {
extraArgument: {},
},
}),
reducer: persistedReducer,
});
export const persistor = persistStore(store);
export type AppDispatch = typeof store.dispatch;
export const useAppDispatch = () => useDispatch<typeof store.dispatch>();
export default store;
export * from './reducers';
export * from './observers';