Реагировать TypeScript |Правильный тип для опоры обработчика событий - PullRequest
0 голосов
/ 27 января 2019

Компонент My App передает обработчик событий в качестве реквизита для Button Component

// App.js

  public handlePlay = () => {
    this.setState({ ****** })
  }
// render

<Button play={this.handlePlay} />

Что такое правильный тип для обработчика событий, переданного через prop, т.е.play?

// Button.js
interface ButtontProps {
  play: any //what is the correct type here?
}

export const Button: React.SFC<ButtontProps> = ({ play }) => (
  <button onClick={play}>Play</button>
)

Я не хочу использовать any, поскольку это отвлечет меня от применения правильных типов для такого экземпляра.

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Самое простое решение - использовать тип MouseEventHandler с HTMLButtonElement в качестве параметра типа:

interface ButtonProps {
  play: React.MouseEventHandler<HTMLButtonElement>
}
0 голосов
/ 27 января 2019

Скорее всего, это должно быть одно из следующих значений:

(event: React.MouseEvent<HTMLElement>) => void
(event: React.MouseEvent<HTMLInputElement>) => void

Вы можете подтвердить это, посмотрев на React здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...