【发布时间】:2019-12-02 06:40:11
【问题描述】:
我在 React 项目中使用 redux-starter-kit。我正在尝试在 createSlice 方法中描述 reducer 中的动作负载类型。
我有两个减速器:
setFetchingMenuItems: (
state: IPagesState,
{ payload }: PayloadAction<boolean>
) => {
state.isFetchingMenuItems = payload;
},
setMenuItems: (
state: IPagesState,
{ payload }: PayloadAction<IMenuItemViewModel[]>
) => {
state.menuItems = payload;
},
第二个按预期工作。如果我尝试调度 setMenuItems 操作,它只接受 IMenuItemViewModel 数组。
但是,如果我尝试使用 true 或 false 有效负载调度 setFetchingMenuItems 操作,TypeScript 会显示错误:“TS2345:'false' 类型的参数不可分配给'false & true' 类型的参数。”
我错过了什么?
更新:
这是我调度操作的异步方法:
export const fetchMenuItems = () => async (
dispatch: Dispatch
): Promise<void> => {
dispatch(setFetchingMenuItems(true));
try {
const { value } = await PageService.getMenuItems();
dispatch(setMenuItems(value));
} catch (e) {
console.log(e);
}
dispatch(setFetchingMenuItems(false));
};
TypeScript 版本是 3.5.1。
【问题讨论】:
-
您能否提供代码 sn-p,在哪里调用您的
setFetchingMenuItems方法?更新 Typescript 版本也是一种选择吗?
标签: typescript redux