この記事の最終更新日: 2023年11月23日
Reactは通常、データフローを通じてUIを更新しますが、場合によってはDOM要素へ直接アクセスする必要があります。このブログ記事では、Reactのref
を使ってDOM要素に直接アクセスする方法について解説します。
Refとは?
Ref(参照)は、Reactコンポーネント内のDOMノードまたはReact要素に「参照」(直接のアクセス権)を提供します。これにより、通常のデータフローの外で、DOM要素を直接操作できます。
Refの作成
Reactでは、React.createRef()
メソッドを使用してrefを作成します。クラスコンポーネント内で、通常はコンストラクタ内でこれを行います。
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
render() {
return <div ref={this.myRef} />;
}
}
Refの使用例
フォーカスの制御
フォーム要素に自動的にフォーカスを当てることが一般的な使用例です。
class AutoFocusTextInput extends React.Component {
constructor(props) {
super(props);
this.textInput = React.createRef();
}
componentDidMount() {
this.textInput.current.focus();
}
render() {
return <input type="text" ref={this.textInput} />;
}
}
アニメーション
DOM要素に直接アクセスして、アニメーションを制御することもできます。
ライブラリ統合
外部DOMライブラリをReactと統合する場合にもrefが役立ちます。
Refの注意点
- Refはコンポーネントの再レンダリングを引き起こしません。
- コンポーネント間でrefを渡すことは避けるべきです。
- 乱用は避け、必要な場合のみ使用しましょう。
まとめ
Refは、ReactでのDOM操作において強力なツールです。しかし、その使用は慎重に行う必要があります。適切に使えば、Reactアプリケーションの機能を大きく拡張できるでしょう。
大阪のエンジニアが書いているブログ。
コメント