How to set focus on an input field after rendering? How to set focus on an input field after rendering? reactjs reactjs

How to set focus on an input field after rendering?


@Dhiraj's answer is correct, and for convenience you can use the autoFocus prop to have an input automatically focus when mounted:

<input autoFocus name=...

Note that in jsx it's autoFocus (capital F) unlike plain old html which is case-insensitive.


You should do it in componentDidMount and refs callback instead. Something like this

componentDidMount(){   this.nameInput.focus(); }

class App extends React.Component{  componentDidMount(){    this.nameInput.focus();  }  render() {    return(      <div>        <input           defaultValue="Won't focus"         />        <input           ref={(input) => { this.nameInput = input; }}           defaultValue="will focus"        />      </div>    );  }}    ReactDOM.render(<App />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react-dom.js"></script><div id="app"></div>