Type Redux store and middleware (#24843)
parent
e1f466fbbe
commit
6aeb162927
9 changed files with 61 additions and 35 deletions
@ -1,16 +0,0 @@ |
||||
import { configureStore } from '@reduxjs/toolkit'; |
||||
import thunk from 'redux-thunk'; |
||||
import appReducer from '../reducers'; |
||||
import loadingBarMiddleware from '../middleware/loading_bar'; |
||||
import errorsMiddleware from '../middleware/errors'; |
||||
import soundsMiddleware from '../middleware/sounds'; |
||||
|
||||
export const store = configureStore({ |
||||
reducer: appReducer, |
||||
middleware: [ |
||||
thunk, |
||||
loadingBarMiddleware({ promiseTypeSuffixes: ['REQUEST', 'SUCCESS', 'FAIL'] }), |
||||
errorsMiddleware(), |
||||
soundsMiddleware(), |
||||
], |
||||
}); |
@ -0,0 +1,23 @@ |
||||
import { configureStore } from '@reduxjs/toolkit'; |
||||
import { rootReducer } from '../reducers'; |
||||
import { loadingBarMiddleware } from './middlewares/loading_bar'; |
||||
import { errorsMiddleware } from './middlewares/errors'; |
||||
import { soundsMiddleware } from './middlewares/sounds'; |
||||
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'; |
||||
|
||||
export const store = configureStore({ |
||||
reducer: rootReducer, |
||||
middleware: getDefaultMiddleware => |
||||
getDefaultMiddleware().concat( |
||||
loadingBarMiddleware({ promiseTypeSuffixes: ['REQUEST', 'SUCCESS', 'FAIL'] })) |
||||
.concat(errorsMiddleware) |
||||
.concat(soundsMiddleware()), |
||||
}); |
||||
|
||||
// Infer the `RootState` and `AppDispatch` types from the store itself
|
||||
export type RootState = ReturnType<typeof rootReducer> |
||||
// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}
|
||||
export type AppDispatch = typeof store.dispatch |
||||
|
||||
export const useAppDispatch: () => AppDispatch = useDispatch; |
||||
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector; |
Loading…
Reference in new issue