【发布时间】:2020-07-11 10:33:09
【问题描述】:
根据标题,我使用的是 Redux-Toolkit 和 Typescript。特别是,我正在尝试按照redux docs 中的建议使用 ConnectedProps。不幸的是,它似乎没有得到正确的调度类型(特别是,它认为它具有正常的 Dispatch 类型而不是 ThunkDispatch)。
有什么建议吗?目前我是:
(1) 使用自定义的“useThunkDispatch”挂钩。但这引入了我并不真正想要的额外行 + 导入。
(2) 使用 'mapDispatch' 的函数版本,将我的调度明确键入为 ThunkDispatch(或 redux toolkit docs 中看到的 AppDispatch
代码沙盒: https://codesandbox.io/s/connectedprops-typing-for-thunk-uyplw
【问题讨论】:
-
你能发布一些额外的代码+信息,说明它在哪里以及如何“没有得到
dispatch的类型”吗? (理想情况下是演示编译错误的 CodeSandbox。)如果您使用的是mapDispatch+ConnectedProps<T>,关键是您甚至不应该对dispatch本身有任何引用 - 它只是为您绑定动作创建者道具。 -
@markerikson 在上面更新以包含 CodeSandBox!是的,就 mapDispatch 达成了一致,但是有两个问题:(1)似乎我必须明确使用函数形式并将 Dispatch 强制转换为 ThunkDispatch,否则会推断出正常的调度并且映射的 Thunks 有打字稿错误。根据redux docs我应该使用对象形式,但在这个例子中似乎不可能。 (2) 实际上我更喜欢不使用 mapDispatch - 我喜欢在我的代码中非常明确地看到与 redux 相关的内容以及与状态相关的内容。我知道这违背了 redux 风格的建议
标签: typescript redux react-redux redux-thunk