reactjs - Redux + typescript:如何实现`injectReducer`?
问题描述
我正在开发一个打字稿反应应用程序,使用 redux 来管理状态。
为了动态添加 reducer,redux 建议实现一个injectReducer
function。
我已经在一个 Javascript 项目中做到了这一点,但我不知道如何用打字稿来做到这一点。
任何建议都会非常有帮助!
到目前为止我已经尝试过:
export interface AppStore extends EnhancedStore<{}> {
injectedReducers?: any;
}
const store: AppStore = configureStore({
reducer: createReducer(),
devTools: process.env.NODE_ENV !== "production",
});
store.injectedReducers = {};
export const injectReducer = (key: string, reducer: Reducer<object>) => {
if (store.injectedReducers[key]) {
return;
}
store.injectedReducers[key] = reducer;
store.replaceReducer(createReducer(store.injectedReducers));
return store;
};
export default function createReducer(injectedReducers?: any) {
return combineReducers({
global: globalReducer,
...injectedReducers,
});
}
这是来自的错误消息createReducer(store.injectedReducers!)
:
Argument of type 'Reducer<CombinedState<{ [x: string]: unknown; }>, never>' is not assignable to parameter of type 'Reducer<{}, AnyAction>'.
Types of parameters 'action' and 'action' are incompatible.
Type 'AnyAction' is not assignable to type 'never'.ts(2345)
解决方案
推荐阅读
- java - 添加java字符串的项数
- javascript - 如何基于相同的值合并 2 个 json?
- android - 在 Recyclerview 中使用画布绘制的自定义视图不起作用
- android - Flow、Cicerone、Fragnav、Simple-stack 的特点是什么以及何时使用它们?
- reactjs - 从选择框 React Material UI 中删除蓝色轮廓
- python - 如何在 ubuntu 中将我的 python 项目作为软件
- matlab - 如何将 lsqnonlin 与边界一起用于我的解决方案(不包括间隔限制)?
- python - 如何在python代码中解析多个xml文件?
- java - Maven 无法下载 maven-psteclipse-plugin:jar:1.0.3
- javascript - 如何在 sass 文件中导入全局规则而不会被编译掉?