这是我的slice.ts文件.

interface iItem {
  Category: string;
  Id: string;
}

interface iDataState {
  Items: Array<iItem>;
}

const initialState: iDataState = {
  Items: [],
};


reducers: {
  updateItem: (state, action: PayloadAction<iItem>) => {
    console.log(state.Items);
  }
}

每次我在组件中运行dispatch(updateItem(data));时,我都会在控制台中看到Proxy(Array) {0: {…}}.

如果我无法访问Items来搜索要更新的项目,我如何更新Items中的项目?

推荐答案

我想您正在使用redux工具包

RTK正在用immerjs(https://redux-toolkit.js.org/usage/immer-reducers)包装您的减速器功能.

这允许您通过改变当前状态来计算您的下一个状态.

IMMER通过将状态包装在代理中来实现这一点,该代理重新实现了类似find的数组的所有方法.

如果您想为了调试而记录包装状态,您可以使用immer导出的函数current console.log(current(state))

Typescript相关问答推荐

如何根据参数的值缩小函数内的签名范围?

界面中这种类型的界面界面中的多态性

创建一个根据布尔参数返回类型的异步函数

如何重构长联合类型?

在类型脚本中的泛型类上扩展的可选参数

如何将所有props传递给React中的组件?

如何使用WebStorm调试NextJS的TypeScrip服务器端代码?

使用2个泛型类型参数透明地处理函数中的联合类型

以Angular 自定义快捷菜单

具有自引用属性的接口

如何编写在返回函数上分配了属性的类型安全泛型闭包

API文件夹内的工作员getAuth()帮助器返回:{UserID:空}

我可以使用typeof来强制执行某些字符串吗

在正常函数内部调用异步函数

如何连接属性名称和值?

棱角分明-什么是...接口类型<;T>;扩展函数{new(...args:any[]):t;}...卑鄙?

如果判断空值,则基本类型Gaurd不起作用

如何在TypeScript中声明逆变函数成员?

如何使用 AWS CDK 扩展默认 ALB 控制器策略?

从 npm 切换到 pnpm 后出现Typescript 错误