UNPKG

cra-template-bod

Version:

The advanced TypeScript template for Bod CLI.

43 lines (37 loc) 1.39 kB
import type { Action, ThunkAction } from '@reduxjs/toolkit' import { combineSlices, configureStore } from '@reduxjs/toolkit' import { counterSlice } from '../containers/Counter/slice' // `combineSlices` automatically combines the reducers using // their `reducerPath`s, therefore we no longer need to call `combineReducers`. const rootReducer = combineSlices(counterSlice) // Infer the `RootState` type from the root reducer export type RootState = ReturnType<typeof rootReducer> /** * The store setup is wrapped in `makeStore` to allow reuse * when setting up tests that need the same store config * @param {Partial<RootState>} preloadedState preload state * @returns {AppStore} app store */ export function makeStore(preloadedState?: Partial<RootState>) { const store = configureStore({ reducer: rootReducer, // Adding the api middleware enables caching, invalidation, polling, // and other useful features of `rtk-query`. middleware(getDefaultMiddleware) { return getDefaultMiddleware() }, preloadedState, }) return store } export const store = makeStore() // Infer the type of `store` export type AppStore = typeof store // Infer the `AppDispatch` type from the store itself export type AppDispatch = AppStore['dispatch'] export type AppThunk<ThunkReturnType = void> = ThunkAction< ThunkReturnType, RootState, unknown, Action >