Warum wird die Ereignisbehandlungsroutine bei dispatchEvent nicht aufgerufen?

Betrachten Sie das folgende Eingabeelement in einer React-Komponente:

<input onChange={() => console.log('onChange')} ... />

Während ich die React-Komponente teste, emuliere ich den Benutzer, der den Eingabewert ändert:

input.value = newValue;
TestUtils.Simulate.change(input);

Dies bewirkt'onChange' wird wie erwartet protokolliert.

Wie auch immer, wenn das'change' Event wird direkt versendet (ich benutze jsdom):

input.value = newValue;
input.dispatchEvent(new Event('change'));

dasonChangehandler wird nicht aufgerufen.

Warum

Meine Motivation, @ zu benutzdispatchEvent eher, alsTestUtils.Simulate DennTestUtils.Simulate unterstützt kein Sprudeln von Ereignissen, und das Verhalten meiner Komponente beruht darauf. Ich frage mich, ob es eine Möglichkeit gibt, Ereignisse ohne @ zu testeTestUtils.Simulate?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage