Пул событий
Примечание
Информация на этой странице актуальна для React версии 16 и ниже, а также для React Native.
Веб-версия React 17 не использует пул событий.
Подробнее в посте блога about this change in React 17.
События SyntheticEvent
содержатся в пуле. Это означает, что объект SyntheticEvent
будет повторно использован, а все его свойства будут очищены после вызова обработчика события.
Например, следующий код не сработает, как ожидается:
function handleChange(e) {
// Ничего не произойдёт, потому что объект события используется повторно.
setTimeout(() => {
console.log(e.target.value); // Слишком поздно!
}, 100);
}
Если нужно обратиться к свойствам объекта события после выполнения обработчика события, то необходимо вызвать e.persist()
:
function handleChange(e) {
// Останавливает React от сброса свойств объекта события:
e.persist();
setTimeout(() => {
console.log(e.target.value); // Сработает
}, 100);
}
Is this page useful?Отредактировать эту страницу