1. ホーム
  2. javascript

[解決済み] レンダリング後に入力フィールドにフォーカスを設定するには?

2022-03-19 01:25:51

質問内容

コンポーネントがレンダリングされた後、特定のテキストフィールドにフォーカスを設定する反応方法は何ですか?

ドキュメントでは、例えばrefsを使うことが推奨されているようです。

セット ref="nameInput" をレンダー関数で入力フィールドに追加し、呼び出します。

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

しかし、これをどこに呼び出せばいいのでしょうか?何カ所か試してみましたが、うまくいきません。

どのように解決するのですか?

で行う必要があります。 componentDidMount そして refs 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>