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 }
})
答案 0 :(得分:0)
简短的答案是使用对象而不是函数,并且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
,而使用钩子替代品useSelector
和useDispatch
。您可以找到更多信息here。