Ваш первый способ, с использованием функции-прототипа, которую вы связываете в конструкторе, хорош, кроме того, что вам не хватает this
:
this.handleClick = this.handleClick.bind(this);
Ваш второй способ создает новую функцию при каждом рендере, внутри render
. Это затрудняет использование handleClick
для целей тестирования.
Третий способ, который вы часто видите, заключается в создании функции стрелки во время построения, либо в конструкторе:
this.handleClick = event => {
// ...
};
или с помощью объявления свойства:
class Bar extends React.Component {
handleClick = event => {
// ...
};
}
У обоих одинаковые проблемы с насмешками / тестируемостью.
Кроме этого, они в порядке.