首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redux + TypeScript +typesafe-操作: createReducer/handleAction错误,参数1无效

Redux + TypeScript +typesafe-操作: createReducer/handleAction错误,参数1无效
EN

Stack Overflow用户
提问于 2020-09-24 22:02:29
回答 1查看 2.5K关注 0票数 1

我按照关于类型化-行动的教程创建了最简单的类型抄本/Redux项目,但是我无法让它工作。我不断地发现错误,

Error: Argument 1 is invalid, it should be an action-creator instance from "typesafe-actions" or action type of type: string | symbol

当我试图访问页面时(虽然打字本很高兴,但代码转换没有问题)

这里是我的reducer.ts (单一还原器,应该用newData覆盖商店)。这似乎是错误起源的地方,handleAction的第二个参数。

代码语言:javascript
复制
import { setData } from "actions";
import { createReducer } from "typesafe-actions";

const dataReducer = createReducer({}).handleAction(
  setData,
  (state, action) => action.payload.newData
);

export default dataReducer;

下面是actions.js文件(我尝试使用actioncreateAction,没有区别):

代码语言:javascript
复制
import { action, createAction } from "typesafe-actions";
import { SET_DATA } from "constants";

export const setData = (newData: string) => action(SET_DATA, { newData });

constants.ts是一个简单的一行程序,export const SET_DATA = "SET_DATA";

根据本教程,我尝试在我的还原程序代码中使用花哨的“类型自由”语法,所以我也有一个types.d.ts文件

代码语言:javascript
复制
// types.d.ts
import { StateType, ActionType } from "typesafe-actions";

export type RootAction = ActionType<typeof import("./actions").default>;

declare module "typesafe-actions" {
  interface Types {
    RootAction: RootAction;
  }
}

据我所知,这应该适用于一个非常简单的例子。我之前做错什么了?

FYI版本:

代码语言:javascript
复制
"react": "^16.13.1",
"redux": "^4.0.5",
"react-redux": "^7.2.1",
"typescript": "~3.7.2"
"typesafe-actions": "^5.1.0"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 22:36:22

虽然这并没有严格地回答你的问题:

我们特别建议使用我们的官方Redux工具包包,而不是typesafe-actions。RTK已经用TS编写,在TS应用程序中工作得很好。

作为其中的一部分,RTK将根据您定义的还原器从createSlice函数生成正确类型的操作创建者。

您可以使用我们的创建反应应用程序的Redux+TS模板快速地设置一个全新的项目,它已经配置为设置您的商店并键入您的RootState

此外,我们建议不要尝试遵循typesafe-actions文档中列出的一些模式,例如尝试定义所有可能的操作类型的联合。这种方法并没有真正的好处。

有关如何使用Redux和的说明,请参阅新的"Redux本质“Redux核心文档教程以正确的方式以及RTK“使用TypeScript”文档页面

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64055036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档