How to manually trigger click event in ReactJS? How to manually trigger click event in ReactJS? reactjs reactjs

How to manually trigger click event in ReactJS?


You could use the ref prop to acquire a reference to the underlying HTMLInputElement object through a callback, store the reference as a class property, then use that reference to later trigger a click from your event handlers using the HTMLElement.click method.

In your render method:

<input ref={input => this.inputElement = input} ... />

In your event handler:

this.inputElement.click();

Full example:

class MyComponent extends React.Component {  render() {    return (      <div onClick={this.handleClick}>        <input ref={input => this.inputElement = input} />      </div>    );  }  handleClick = (e) => {    this.inputElement.click();  }}

Note the ES6 arrow function that provides the correct lexical scope for this in the callback. Also note, that the object you acquire this way is an object akin to what you would acquire using document.getElementById, i.e. the actual DOM-node.


Got the following to work May 2018 with ES6 React Docs as a reference: https://reactjs.org/docs/refs-and-the-dom.html

import React, { Component } from "react";class AddImage extends Component {  constructor(props) {    super(props);    this.fileUpload = React.createRef();    this.showFileUpload = this.showFileUpload.bind(this);  }  showFileUpload() {    this.fileUpload.current.click();  }  render() {    return (      <div className="AddImage">        <input          type="file"          id="my_file"          style={{ display: "none" }}          ref={this.fileUpload}        />        <input          type="image"          src="http://www.graphicssimplified.com/wp-content/uploads/2015/04/upload-cloud.png"          width="30px"          onClick={this.showFileUpload}        />      </div>    );  }}export default AddImage;


Here is the Hooks solution

    import React, {useRef} from 'react';    const MyComponent = () =>{    const myRefname= useRef(null);    const handleClick = () => {        myRefname.current.focus();     }    return (      <div onClick={handleClick}>        <input ref={myRefname}/>      </div>     );    }