#reactjs #typescript #enzyme
#reactjs #typescript #энзим
Вопрос:
Я знаю simulate('click')
, что используется для проверки нажатия на компонент, но почему это вместо simulate('onClick')
? И почему он принимает «изменение» вместо «onChange»?
‘click’ и ‘change’ не являются собственными событиями html. В документах говорится, что для этого просто требуется старая строка.
/**
* Simulate events.
* Returns itself.
* @param args?
*/
simulate(event: string, ...args: any[]): this;
Существует ли список типов, который является источником истины для того, какую строку принимает параметр события?
Ответ №1:
.simulate()
вызовет .simulateEvent()
метод и .simulateEvent()
вызовет propFromEvent()
функцию, и он будет вызывать mapNativeEventNames()
сопоставление собственного имени события браузера с именем события в верблюжьей оболочке без префикса on
. Например. 'touchstart'
сопоставит с 'touchStart'
.
Затем propFromEvent()
сопоставит собственное имя события с именем элемента React props с верблюжьим именем с префиксом on
. Например. 'click' => 'onClick'
, 'mouseEnter' => 'onMouseEnter'
Итак, .simulate(event)
принимает собственный тип события браузера, аналогичный addEventListener. Это поможет вам сопоставить реквизит события React с реквизитом события React.
Полный список типов событий: w3c