Aby naprawdę zrozumieć, co się dzieje w kodzie wskazane byłoby, aby zobaczyć swój kod komponentu (konkretnie swoją obsługi onChange
.
Jednak w odniesieniu do następującego kodu:
input.simulate('change', {target: {value: 'abc'}});
ta nie spowoduje zmiany wartości swojej <input />
element, po prostu powoduje, że twoja funkcja onChange
jest uruchamiana i dostarczany obiekt zdarzenia, który wygląda jak {target: {value: 'abc'}}
.
Chodzi o to, że twoja funkcja onChange
zaktualizuje twój stan lub sklep, więc wyzwolenie tej funkcji powinno spowodować zaktualizowanie DOM. Jeśli w rzeczywistości nie masz instrukcji obsługi onChange
zdefiniowanej przy użyciu input.simulate('change')
, nic nie zostanie zrobione.
Tak więc, jeśli twoim celem jest, aby właściwie ustawić wartość na wejściu i nie wywoła onChange
obsługi można użyć JS ręcznie zaktualizować DOM przy użyciu coś jak wrapper.find('#my-input').node.value = 'abc';
jednak jest to obejście Reaguj na renderowanie cykl i to często zobacz tę wartość wyczyszczoną/usuniętą, jeśli zrobisz cokolwiek, co spowoduje ponowne renderowanie.
Wydaje się, że trzeba użyć 'mount' aby działał poprawnie. – sigod