【发布时间】:2023-03-20 11:45:01
【问题描述】:
在我们的项目中,所有动作创建者的定义如下:
export const actionCreatorFunctionName(arg1, arg2...) {
return (dispatch: Dispatch, getStore: () => StoreState) => {
// ... function logic ...
dispatch(actionFunctionName(args...));
}
}
一些动作创建者发出 HTTP 请求,在请求解决之前不调用 dispatch。
这些动作创建者使用connect hoc 映射到道具,如下所示:
import * as ActionCreators from "./actionCreators";
connect(mapStateToProps, { actions: ActionCreators })(SomeComponent);
问题是使用此设置时似乎无法正确配置组件的 props 接口。我们尝试过像这样配置 Props:
interface Props {
actions: typeof ActionCreators;
}
但这不起作用,因为actions prop 与ActionCreators 的类型并不相同,因为connect hoc 将actionCreators 从返回函数的函数更改为普通函数。
【问题讨论】:
-
我认为除了定义实际动作之外,您还需要定义一个包含每个函数的所有方法签名的动作类型,然后在您的道具中导入并使用它
标签: reactjs typescript redux react-redux