Итак, у меня есть функция асинхронного преобразования в редуксе:
export const fetchItem = createAsyncThunk('item/fetchItem', async (id: number) => {
const res = await fetch(`${apiUrl}/${id}`)
.then(res => res.json())
return res
})
И вот моя функция выборки в реакции, она извлекает элемент по html-идентификатору цели события (тег):
const handleFetch = (e: React.MouseEvent<HTMLAnchorElement>) => {
useAppDispatch(fetchItem(e.target.id))
}
Ошибка находится в fetchItem и говорит: Ожидается 0 аргументов, но получен 1. Я даже пытался просто использовать:
useAppDispatch(fetchItem(1))
И получил ту же ошибку.
useAppDispatch выглядит так:
import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux";
import type { RootState, AppDispatch} from "./redux/store";
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector()
export const useAppDispatch = () => useDispatch<AppDispatch>()
Только что обновил вопрос, теперь вы можете его увидеть
useAppDispatch
принимает 0 аргументов, но вы передаете 1. Кроме того, это хук, но вы используете его внутри функции
Глядя на другие варианты использования этого шаблона, вы должны иметь что-то вроде const dispatch = useAppDispatch()
, а затем использовать dispatch(fetchItem(whatever))
Итак, я могу добавить, например, «params: any» к параметру?
Машинописный текст @IsaSeferović пытается помочь вам, но вы хотите обвинить его. Проблема не связана с машинописью
useAppDispatch
— это хук, который можно использовать только непосредственно внутри тела компонента.useAppDispatch
принимает 0 аргументов, но вы передаете 1useAppDispatch
возвращает функцию dispatch
, которую вы хотели использовать// inside your component
const dispatch = useAppDispatch()
const handleFetch = (e: React.MouseEvent<HTMLAnchorElement>) => {
dispatch(fetchItem(e.target.id))
}
Как выглядит
useAppDispatch
?