为何直接调用useAppDispatch传参报错,存为const后正常?
问题原因解析
1. useAppDispatch本身不接收参数
useAppDispatch是Redux提供的React Hook,它的唯一作用是返回Redux的dispatch函数,本身不需要也不能传任何参数。你直接给useAppDispatch传action对象,完全不符合它的类型定义,Lint自然会提示参数数量不匹配的错误。
2. 正确写法是先获取dispatch函数再调用
当你执行const dispatch = useAppDispatch()时,其实是拿到了真正用来触发action的dispatch函数——这个函数才是专门用来接收action对象作为参数的。之后调用dispatch({type: "ADD_CLICKED"}),完全符合类型校验规则,所以不会报错。
3. 错误代码还违反了React Hook调用规则
你在handleOnClick事件处理函数内部调用useAppDispatch,这本身就违反了React Hook的核心规则:Hook只能在组件顶层或自定义Hook的顶层调用,不能嵌套在事件处理、循环或条件判断逻辑里。就算没有Lint报错,这种写法也可能导致组件状态出现不可预期的异常。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

