Я хочу вызвать событие в инструментах разработчика Chrome, но я новичок в реагировании, мне труднее сделать это, чем в JS.
У меня есть такой пример:
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = {
value: ''
};
this.handleChangeEvent = this.handleChangeEvent.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChangeEvent(event) {
this.setState({
value: event.target.value
});
}
handleSubmit(event) {
alert('A name was submitted: ' + this.state.value);
event.preventDefault();
}
render() {
return ( <
form onSubmit = {
this.handleSubmit
} >
<
label >
Name:
<
input type = "text"
value = {
this.state.value
}
onChange = {
this.handleChangeEvent
}
/> <
/label> <
input type = "submit"
value = "Submit" / >
<
/form>
);
}
}
ReactDOM.render( <
div > < NameForm / > < NameForm / > < /div>,
document.getElementById('root')
);
// doesn't work since v15.6.0
var ev = new Event('input', {
bubbles: true
});
document.querySelector('form:first-child input').value = 'Not working';
document.querySelector('form:first-child input').dispatchEvent(ev);
var ev2 = new Event('input', {
bubbles: true
});
ev2.simulated = true;
document.querySelector('form:last-child input').value = 'With simulated flag';
document.querySelector('form:last-child input').dispatchEvent(ev2);Допустим, я хочу запустить в консоли что-то, что вызовет такое же действие, как если бы я нажал кнопку отправки, которая была JS-эквивалентом .click для этого элемента.
Как мне это сделать?
Обновлять: Предлагаемая ниже функция не сработала для меня, есть другие предложения?
Вы должны стараться избегать прямых манипуляций с DOM, насколько это возможно. Бывают времена, когда это хорошо, но это долгая история. Если вы можете использовать методы реагирования, я бы порекомендовал это. это помогает сохранить контекст всего в жизненном цикле компонента
Извините, но я не понял, вы можете использовать мой пример? Вы говорите, что я должен в консоли Chrome Web Tools смонтировать класс, а затем вызвать функции обработчика?





как насчет
componentDidMount() { window.myDebugCls = this }? затем вы можете вызвать методы в своем экземпляре класса реакции для этого компонента. Очевидно, это только для отладки :)