问题描述
我在设置中间件时遇到以下错误。使用 Redux observable/Redux 工具包。 关于为什么会发生这种情况的任何意见?
遵循以下回购设置。 https://github.com/beast911/react-redux-observables-typescript
import systemReducer,{
getInfoStart,getInfoSuccess,getInfoFailed,addInfoStart,addInfoSuccess,addInfoFailed,editInfoStart,editInfoSuccess,editInfoFailed,deleteInfoStart,deleteInfoSuccess,deleteInfoFailed,completeInfoStart,completeInfoSuccess,completeInfoFailed,} from "./system/slice";
import {
combineReducers,configureStore,getDefaultMiddleware,} from "@reduxjs/toolkit";
import { createbrowserHistory } from "history";
import { combineEpics,createEpicMiddleware } from "redux-observable";
import {
getInfoEpic,addInfoEpic,completeInfoEpic,deleteInfoEpic,editInfoEpic,} from "./system/epics";
import { ActionType } from "typesafe-actions";
import {
connectRouter,routerMiddleware,RouterState,} from "connected-react-router";
type SystemActionsWithPayload =
| typeof getInfoStart
| typeof getInfoSuccess
| typeof getInfoFailed
| typeof addInfoStart
| typeof addInfoSuccess
| typeof addInfoFailed
| typeof editInfoStart
| typeof editInfoSuccess
| typeof editInfoFailed
| typeof deleteInfoStart
| typeof deleteInfoSuccess
| typeof deleteInfoFailed
| typeof completeInfoStart
| typeof completeInfoSuccess
| typeof completeInfoFailed;
type SystemActions = ActionType<SystemActionsWithPayload>;
type finalActions = SystemActions;
const epics = combineEpics(
getInfoEpic,editInfoEpic
);
export const history = createbrowserHistory<RouterState>();
export const rootReducer = combineReducers({
router: connectRouter(history),system: systemReducer,});
export type RootState = ReturnType<typeof rootReducer>;
const epicMiddleware = createEpicMiddleware<
finalActions,// input actions
finalActions,// output actions
RootState
>();
function configureAppStore(initialState?: any) {
// configure middlewares
const middlewares = [routerMiddleware(history),epicMiddleware];
// create store
return configureStore<RootState>({
reducer: rootReducer,middleware: middlewares,preloadedState: initialState,});
}
export const store = configureAppStore();
epicMiddleware.run(epics);
类型 'Middleware[]' 不能分配给类型 '[ThunkMiddleware
解决方法
不应使用手动指定的泛型调用大多数 Redux Toolkit api。
通过调用 initialText
,您实际上会从您的商店中删除有关中间件的所有信息。跳过泛型,只需调用 return configureStore<RootState>(...
并让 TypeScript 从用法推断正确的类型。