函数的Redux调度类型


redux函数的调度类型是什么?其中不包含类型属性?

例如,我在这里做any,它有效,但这里的实际类型是什么?

const mapDispatchToProps = (dispatch:any) => ({
updateProject: (project: ProjectBody) => dispatch(updateProject(project))
})

我的更新项目看起来像这个

export function update(project: ProjectBody) {
return async (dispatch: Dispatch<UpdateStateAction>) => {
try {
const res = await fetch(`${project.id}`, {
// sme code
dispatch({
type: SUCCESS_UPDATE_PROJECT,
payload: { project: json.project }
})

简单的答案是使用对象而不是函数,dispatch为您绑定:

const mapDispatch = {
updateProject
}

中等答案是Dispatch是一种泛型类型,因此您可以传递动作创建者生成的对象形状作为参数。如果您有多个操作创建者,则要映射到props,请使用语法:Dispatch<IActionCreatorIncCount | IActionCreatorDecCount>

import {Dispatch} from 'react-redux'
const INC_COUNT = 'INC_COUNT'
interface IActionCreatorIncCount {
payload: number
type: typeof INC_COUNT
}
const actionCreatorIncCount = (n: number): IActionCreatorIncCount =>
({ payload: n, type: INC_COUNT })
const mapDispatchToProps = (dispatch: Dispatch<IActionCreatorIncCount>) => ({
incCount: actionCreatorIncCount
})

长期的答案是不再使用mapDispatchToProps,而是使用钩子替代useSelectoruseDispatch。你可以在这里找到更多信息。

相关内容

  • 没有找到相关文章

最新更新