Я пытаюсь реализовать пользовательский хук React для выборки данных, используя эту статью .Этот пользовательский хук выглядит следующим образом:
type Action<T> =
| { type: "FETCH_INIT" }
| { payload: T; type: "FETCH_SUCCESS" }
| { error: string; type: "FETCH_FAILURE" };
interface IState<T> {
data: T;
error: string;
isLoading: boolean;
}
export const useFetch = <T>(initialUrl: string, initialData: T) => {
const initialState = {
data: initialData,
error: "",
isLoading: false,
};
const [state, dispatch] = useReducer<Reducer<IState<T>, Action<T>>>(dataFetchReducer, initialState);
...
};
Проблема
Проблема заключается в том, что я пытаюсь ввести функцию dataFetchReducer
.Я не уверен, как передать универсальный тип из useFetch
в dataFetchReducer
.
Вот как выглядит dataFetchReducer
.
const dataFetchReducer = <T>(state: IState<T>, action: Action<T>): IState<T> => {...};
Возможно, я его переосмыслили React фактически передают универсальный тип от useReducer
до dataFetchReducer
, но я не уверен и даже не знаю, как проверить это поведение.