import { combineReducers, configureStore } from '@reduxjs/toolkit' import { persistStore, persistReducer, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER } from 'redux-persist' import storage from 'redux-persist/lib/storage' // defaults to localStorage import data from './data' import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux' const rootReducer = combineReducers({ data }) const persistedReducer = persistReducer( { key: 'root', storage, whitelist: ['data'] }, rootReducer ) export const store = configureStore({ reducer: persistedReducer, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER] } }) }) export type RootState = ReturnType export type AppDispatch = typeof store.dispatch export const useAppDispatch = () => useDispatch() export const useAppSelector: TypedUseSelectorHook = useSelector export const persistor = persistStore(store)