redux 类型“AsyncThunkAction< any,number,{}>”的参数不可分配给类型“AnyAction”的参数错误

ukqbszuj  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(159)

我有一个调度功能:

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文档中的一样?

fnx2tebb

fnx2tebb1#

我也有同样的问题。在我的情况下,我有这个错误的线在我的商店。tsx:

export const store: EnhancedStore = configureStore(...)

EnhancedStore类型返回一个不支持thunk的分派。将其更改为:

export const store = configureStore(...)

允许TypeScript将类型推断为ToolkitStore,从而修复了它。
如果您的存储不是ToolkitStore,请重新查看您是如何初始化它的。

相关问题