#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);