我在使用模块createAsyncAction ( 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是异步构建器的联合,而不是操作本身。
我该怎么解决这些问题?
发布于 2018-11-14 16:57:55
好的,我所拥有的实际上是正确的,但是在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有效地显示了导出
https://stackoverflow.com/questions/53303355
复制相似问题