Какие события принимаются simulate от Enzyme?

#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