使用RTK Thunk遇TypeScript参数识别错误,环境是否存在问题?
问题分析与解决
核心问题不是环境问题,是代码写法错误,两个关键点:
- 违反React Hooks调用规则:
useAppDispatch是React Hook,必须在组件的顶层作用域调用,不能放在useEffect这类回调函数内部。 - Thunk参数缺失:你定义的
getUserAccessToken需要接收一个connectionString参数,但调用时没传,导致TypeScript类型不匹配。
修正后的代码示例:
// 组件顶层先获取dispatch const dispatch = useAppDispatch(); useEffect(() => { // 传入必填的connectionString参数,再dispatch thunk dispatch(getUserAccessToken(CONNECTION_STRING)); }, [dispatch]); // 将dispatch加入依赖数组
额外说明:
- React Hooks规则要求所有Hooks必须在组件最外层调用,不能嵌套在循环、条件或嵌套函数里,否则会触发lint错误。
createAsyncThunk生成的thunk函数,必须传入定义时声明的参数(除非参数设置为可选),否则TypeScript会检测到类型不兼容问题。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

