Как указать handleDayClick компонента средства выбора дня реакции функционального компонента

#reactjs #react-functional-component #react-day-picker

#reactjs #react-functional-component #средство выбора дня реакции

Вопрос:

У меня есть функциональный компонент, в котором я использую компонент выбора дня реакции. На странице примеров они используют компонент на основе классов и предоставляют этот пример того, как обрабатывать выбор дня:

 ...
handleDayClick(day, { selected }) {
}
...
        <DayPicker
          onDayClick={this.handleDayClick}
        />
 

В моем функциональном компоненте я сделал это:

   const handleDayClick = (day, { selected }) => {
    ...
  }
...
                <DayPicker
                  onDayClick={handleDayClick}
                />
 

Но TypeScript жалуется, говоря (с onDayClick подчеркиванием):

 No overload matches this call.
  Overload 1 of 2, '(props: DayPickerProps | Readonly<DayPickerProps>): DayPicker', gave the following error.
    Type '(day: any, { selected }: { selected: any; }) => void' is not assignable to type '(day: Date, modifiers: DayModifiers, e: MouseEvent<HTMLDivElement, MouseEvent>) => void'.
      Types of parameters '__1' and 'modifiers' are incompatible.
        Property 'selected' is missing in type 'DayModifiers' but required in type '{ selected: any; }'.
  Overload 2 of 2, '(props: DayPickerProps, context: any): DayPicker', gave the following error.
    Type '(day: any, { selected }: { selected: any; }) => void' is not assignable to type '(day: Date, modifiers: DayModifiers, e: MouseEvent<HTMLDivElement, MouseEvent>) => void'.ts(2769)
 

Также пробовал это:

                 <DayPicker
                  onDayClick={() => handleDayClick()}
                />

 

Но тогда я не знаю, какие параметры предоставить handleDayClick() функции, которая ожидает два параметра, и поэтому TypeScript жалуется на это: Expected 2 arguments, but got 0.

Любая помощь приветствуется!

Ответ №1:

Измените параметры функции на это, чтобы сделать TypeScript счастливым:

 const handleDayClick(day: Date, modifiers: DayModifiers)