React hook useContext не возвращает правильное значение (согласно typescript)

#javascript #reactjs #typescript #react-hooks

#javascript #reactjs #typescript #реагирующие перехваты

Вопрос:

У меня есть следующий код, который получает dispatch метод:

 const mapDispatchToProps = (dispatch: React.Dispatch<AppAction>) => ({

});
  

Я использую useContext вот так;

     const appContext = useContext(AppContext);
    const [state, dispatch] = appContext;
  

Однако при запуске mapDispatchToProps(dispatch); я получаю следующую ошибку:

Error:(28, 24) TS2345: Argument of type '[AppState, Dispatch<AppAction>]' is not assignable to parameter of type 'Dispatch<AppAction>'.
Type '[AppState, Dispatch<AppAction>]' provides no match for the signature '(value: AppAction): void'.

Он считает, что dispatch все еще является массивом… Что происходит?

Комментарии:

1. это проблема ts — useContext() возвращает метод, и вы пытаетесь назначить массив

2. Возможно ли это исправить?

Ответ №1:

Оказывается, вам нужно объявить тип для вашего контекста следующим образом:

export const AppContext = React.createContext<[AppState, Dispatch<AppAction>] | null>(null);

Вместо export const AppContext = React.createContext<Array<[AppState, Dispatch<AppAction>]> | null>(null);