Вы можете использовать refопору для получения ссылки на базовый объект HTMLInputElement через обратный вызов, сохранить ссылку как свойство класса, а затем использовать эту ссылку для последующего запуска щелчка из ваших обработчиков событий с помощью метода HTMLElement.click .
В вашем renderметоде:
<input ref={input => this.inputElement = input} ... />
В вашем обработчике событий:
this.inputElement.click();
Полный пример:
class MyComponent extends React.Component {
render() {
return (
<div onClick={this.handleClick}>
<input ref={input => this.inputElement = input} />
</div>
);
}
handleClick = (e) => {
this.inputElement.click();
}
}
Обратите внимание на стрелочную функцию ES6, которая обеспечивает правильную лексическую область для thisобратного вызова. Также обратите внимание, что объект, который вы получаете таким образом, является объектом, похожим на то, что вы получили бы с помощью document.getElementById, то есть фактическим DOM-узлом.