Навешивание событий в JSX

Давайте теперь изучим работу с событиями на React. К примеру, сделаем так, чтобы по клику на блок выводился алерт с некоторым текстом.

Пусть у нас есть функция showMess, которая выводит алерт с сообщением, а в HTML коде есть кнопка, по клику на которую нам и хотелось бы видеть этот алерт:

function App() { function showMess() { alert('hello'); } return <div> <button>show</button> </div>; }

Давайте привяжем к нашей кнопке событие onclick так, чтобы по клику на этот див срабатывала функция showMess. Для этого нужно добавить атрибут onClick (именно в camelCase, то есть onClick, а не onclick), а в нем указать функцию, которая выполнится по этому событию:

function App() { function showMess() { alert('hello'); } return <div> <button onClick={showMess}>show</button> </div>; }

Таким образом и происходит работа с событиями: добавляется атрибут (к примеру, onClick или onFocus), значением атрибута указывается метод, который будет вызван по этому событию.

Дан следующий код:

function App() { function show1() { alert(1); } function show2() { alert(2); } return <div> <button>act1</button> <button>act2</button> </div>; }

Сделайте так, чтобы по клику на первую кнопку срабатывала первая функция, а по клику на вторую кнопку - вторая функция.

Параметры в функции

Пусть наша функция showMess параметром принимает имя того, с кем мы хотим поздороваться:

function showMess(name) { alert('hello, ' + name); }

Можно передать этот параметр при привязывании функции к событию. Для этого вызов нашей функции следует обернуть в стрелочную функцию:

function App() { function showMess(name) { alert('hello, ' + name); } return <div> <button onClick={() => showMess('user')}>show</button> </div>; }

Таким образом мы можем привязать одну и ту же функцию к нескольким кнопкам с разными параметрами:

function App() { function showMess(text) { alert(text); } return <div> <button onClick={() => showMess('user1')}>show1</button> <button onClick={() => showMess('user2')}>show2</button> </div>; }

Даны три кнопки:

function App() { return <div> <button>act1</button> <button>act2</button> <button>act3</button> </div>; }

Сделайте так, чтобы по клику на первую кнопку алертом выводилось число 1, по клику на вторую кнопку - число 2, а по клику на третью - число 3.