首页 > 解决方案 > 为什么 redux-starter-kit 中 PayloadAction 中的“布尔值”变为“假和真”?

问题描述

我在 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。

标签: typescriptredux

解决方案


问题出在 redux-starter-kit 中(我有 0.5.1 版)。版本0.6.0修复了它。所以我更新到 0.6.2 现在它可以工作了。


推荐阅读