Рассмотрим следующий входной элемент в React компонента:Почему обработчик события React не вызван в dispatchEvent?
<input onChange={() => console.log('onChange')} ... />
Во время тестирования Реагировать компонент, я эмулировать пользователя, изменив значение входного:
input.value = newValue;
TestUtils.Simulate.change(input);
Это вызывает 'onChange'
быть зарегистрированным как ожидается.
Однако, когда 'change'
событие отправляется непосредственно (я использую jsdom):
input.value = newValue;
input.dispatchEvent(new Event('change'));
onChange
обработчик не вызывается.
Почему?
Мотивация использования dispatchEvent
, а не TestUtils.Simulate
, заключается в том, что TestUtils.Simulate
не поддерживает событие пузыря, и поведение моего компонента зависит от этого. Интересно, есть ли способ проверить события без TestUtils.Simulate
?
Спасибо, это один работал для меня! – belek
ты мой спаситель! – shlensky