使用typesafe-actions的异步动作简化器输入

时间:2018-11-14 15:14:55

标签: reactjs typescript react-redux

在使用模块createAsyncActionTypesafe Actions)中的typesafe-actions并为我的减速器键入相同的内容时,我遇到了一个小困难

这是动作

export const login = createAsyncAction(
    EmployeeConstants.LOGIN.REQUEST,
    EmployeeConstants.LOGIN.SUCCESS,
    EmployeeConstants.LOGIN.ERROR
)<ILoginRequest,ILoginSuccess, Error>();

如您所见,这将创建一个异步操作生成器AsyncActionBuilder,而不是操作本身。

我的减速器是这样输入的

import * as loginActions from './actions';

type IEmployeeActions = ActionType<typeof loginActions>;

const employeeState = (state = initialState, action: IEmployeeActions) => {
  // switch cases
}

但是我无法访问payloadtype(显然),因为loginActions是异步生成器的联合,而不是Action本身。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

好的,我实际上是正确的,但是在createAsyncAction中创建常量时我执行得不好

我正在动态生成如下常量:

function createAsyncTypes(type: string) {
    return {
        REQUEST: type + "_REQUEST",
        SUCCESS: type + "_SUCCESS",
        ERROR: type + "_ERROR"
    }
}

TS服务器无法在棉绒期间进行计算,并且在链接期间造成混乱。

我将它们更改为此,

export const login = createAsyncAction(
    "LOGIN_REQUEST",
    "LOGIN_SUCCESS",
    "LOGIN_FAILURE"
)<ILoginRequest, ILoginSuccess, Error>();

TS Server有效地显示了导出