Это должно сделать это для вас.Также здесь есть песочница, поэтому вы можете увидеть ее в действии: https://codesandbox.io/s/hardcore-bassi-2lwbu
<button
onClick={
this.state.hasBeenFinished
? () => {
this.changeTimerStatus();
this.confirmHandler();
}
: !this.state.hasDest
? () => {
this.changeTimerStatus();
this.takeTaskHandler();
}
: this.finishHandler
}
>
Click
</button>
Как уже упоминали коллеги, вы можете переместить всю эту логику в один обработчик событий, подобный этому, и соединить ее сслушатель событий
handleClick = () => {
this.state.hasBeenFinished
? () => {
this.changeTimerStatus();
this.confirmHandler();
}
: !this.state.hasDest
? () => {
this.changeTimerStatus();
this.takeTaskHandler();
}
: this.finishHandler
}
Затем в кнопке:
<button onClick={this.handleClick}>Click</button>
Преимущества этого:
- Предотвращает ненужные повторные рендеры, вызванные использованиеманонимные функции как обработчики событий во время рендеринга.
- Очищает разметку, чтобы было проще читать логику вашего компонента.