Есть ли способ передать универсальный тип в редуктор, используемый в обработчике реакции useReducer? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь реализовать пользовательский хук 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, но я не уверен и даже не знаю, как проверить это поведение.

...