我有一个调度功能:
const dispatch = useAppDispatch()
const handleFetch = (e: React.MouseEvent<HTMLAnchorElement>) => {
const target = e.target as Element
dispatch(fetchCity(parseInt(target.id)))
localStorage.setItem('location', target.id)
}
async thunk函数看起来像这样:
export const fetchCity = createAsyncThunk('city/fetchCity', async (id: number) => {
const res = await fetch(`${apiUrl}/${id}`)
.then(res => res.json())
return res
})
我的useAppDispatch钩子看起来像这样,它与redux typescript docs中的钩子相同:
import type { AppDispatch } from "./redux/store";
export const useAppDispatch: () => AppDispatch = useDispatch
AppDispatch类型看起来像这样,它再次来自redux typescript文档:
export type AppDispatch = typeof store.dispatch
问题出在
dispatch(fetchCity(parseInt(target.id)))
错误是这样说的:“AsyncThunkAction<any,number,{}>”类型的参数不能分配给“AnyAction”类型的参数。
我甚至试着去做:
dispatch(fetchCity(1))
我得到了同样的错误。
我该怎么办,我很困惑,因为我做的所有这些都和redux文档中的一样?
1条答案
按热度按时间fnx2tebb1#
我也有同样的问题。在我的情况下,我有这个错误的线在我的商店。tsx:
EnhancedStore类型返回一个不支持thunk的分派。将其更改为:
允许TypeScript将类型推断为
ToolkitStore
,从而修复了它。如果您的存储不是
ToolkitStore
,请重新查看您是如何初始化它的。