问题描述:
在 toolkit v1 中,使用 configureStore 配置中间件的方法是在 middleware 选项中以数组的方式安装中间件,如下:
// store - typescript
import { configureStore, combineReducers} from "@reduxjs/toolkit";
import reduxThunk from "redux-thunk";
import reduxPromise from "redux-promise";
// other import...
export const store = configureStore({
reducer: persistReducerConfig,
middleware: [reduxThunk, reduxPromise],
devTools: true
});
但在 toolkit v2.2.5 版本中,上诉写法会出现报错:
不能将类型“any[]”分配给类型“(getDefaultMiddleware: GetDefaultMiddleware<{ global: GlobalState; } & PersistPartial>) => Tuple<[ThunkMiddleware<S, UnknownAction>]>”。
类型“any[]”提供的内容与签名“(getDefaultMiddleware: GetDefaultMiddleware<{ global: GlobalState; } & PersistPartial>): Tuple<[ThunkMiddleware<S, UnknownAction>]>”不匹配。ts(2322)
解决方法:
查看官网后(getDefaultMiddleware | Redux Toolkit),将写法修改如下:
// typescript
import { configureStore, combineReducers, Tuple } from "@reduxjs/toolkit";
import { thunk } from "redux-thunk";
import reduxPromise from "redux-promise";
// other import...
export const store = configureStore({
reducer: persistedReducer,
devTools: true, // 是否开启开发者工具,默认true
// 配置中间件
// 方法一
middleware: () => new Tuple(thunk, reduxPromise),
// 方法二
// middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(thunk).concat(reduxPromise),
});
补充: 一文搞定react中redux状态管理及使用,redux、reduxjs/toolkit、redux-persist持久化入门