一尘不染

渲染后将焦点放在输入上

javascript

呈现组件后,将焦点设置在特定文本字段上的反应方式是什么?

文档似乎建议使用引用,例如:

ref="nameInput"在渲染函数中的输入字段上进行设置,然后调用:

this.refs.nameInput.getInputDOMNode().focus();

但是我应该在哪里称呼它呢?我已经尝试了几个地方,但无法正常工作。


阅读 264

收藏
2020-04-25

共1个答案

一尘不染

您应该这样做,componentDidMountrefs callback不是。像这样

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>
2020-04-25