Задать вопрос
@Aleksey100

Как повесить событие на компонент?

На странице используется компонент ButtonBorder ,
<div className='chat-settings__options'>
          <ButtonBorder value='Классика' />
          <ButtonBorder value='Модерн' />
          <ButtonBorder value='Без дизайна' />
</div>
подскажите как можно повесить на него обработчик события, например onClick?
Если делать как обычно
<ButtonBorder onClick={/*функция*/} value='Классика' />
, то получается что она просто как props передается в компонент, а не обрабатывается
  • Вопрос задан
  • 2065 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Повесьте на div className='chat-settings__options, а делегированием уже опеределяйте целевой объект.
В примитиве так:
<div onclick="handler();" className='chat-settings__options'>
	<ButtonBorder value='Классика' />
	<ButtonBorder value='Модерн' />
	<ButtonBorder value='Без дизайна' />
</div>

<script>
	function handler (e) {
		var t = e.target;
		switch (t.value) {
			case 'Классика':
				// Что-то делаем
				break;
			// etc...
			default:
				// Если ничего не подошло
				break;
		}
	}
</script>
Ответ написан
GreyCrew
@GreyCrew
Full-stack developer
Вот у вас есть родительский компонент, в котором есть событие
export default class App extends Component {	
	render() {
		return (
			<ButtonBorder onCustomClick={this.handleClick} value='Классика' />
		)
	}
    handleClick(){
        console.log('action')
    }
}

И дочерний, в котором мы получаем событие
export default class ButtonBorder extends Component {	
        const {onCustomClick, value } = this.props;
	render() {
		return (
			<button onClick={onCustomClick} >{value}</button>
		)
	}
}
Ответ написан
pash4paul
@pash4paul
<ButtonBorder onClick={() => {/*функция*/}} value='Классика' />


Попробуй так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 14:07
15000 руб./за проект
22 дек. 2024, в 13:01
50000 руб./за проект
22 дек. 2024, в 10:44
15000 руб./за проект