在使用模块createAsyncAction
(Typesafe 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
}
但是我无法访问payload
或type
(显然),因为loginActions
是异步生成器的联合,而不是Action本身。
我该如何解决?
答案 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有效地显示了导出