Внутри функции, привязанной к обработчику
событий, доступен объект
Event
:
function App() {
function func(event) {
console.log(event); // объект с событием
}
return <div>
<button onClick={func}>act</button>
</div>;
}
В переменную event
попадает не родной
объект Event
браузера, а специальная
кроссбраузерная обертка над ним со стороны
React. Эта обертка называется SyntheticEvent
.
Эта обертка помогает событиям работать одинаково
во всех браузерах. У нее такой же интерфейс,
как и у нативного события, включая методы
stopPropagation()
и preventDefault()
.
Дана кнопка. По клику на нее получите объект
Event
и выведите его в консоль.
Дана кнопка. По клику на нее получите выведите
в консоль event.target
клика.
Объект Event при передачи параметров
Пусть у нас есть некоторая функция func
,
которую мы хотим использовать в качестве
обработчика события. Пусть эта функция принимает
некоторый параметр:
function func(arg) {
console.log(arg);
}
Давайте используем эту функцию в качестве обработчика, передав ей параметр:
function App() {
function func(arg) {
console.log(arg);
}
return <div>
<button onClick={() => func('eee')}>act</button>
</div>;
}
Пусть теперь кроме параметра мы хотим получить
в нашей функции объект Event
. Для
этого нам нужно поступить следующим образом:
function App() {
function func(arg, event) {
console.log(arg, event);
}
return <div>
<button onClick={event => func('eee', event)}>act</button>
</div>;
}
Расскажите, как работает приведенный код.
Переделайте приведенный код так, чтобы функция принимала два параметра.
Модифицируйте предыдущую задачу так, чтобы объект с событием передавался первым параметром функции, а не последним.
Модифицируйте предыдущую задачу так, чтобы объект с событием передавался вторым параметром функции, находясь между первым и третьим параметрами.