React refsの詳細な紹介

React refsの詳細な紹介

1. 何ですか

Refs 、コンピューターでは Resilient File System (ReFS​​) と呼ばれます。

ReactRefs renderメソッドで作成されたDOMノードまたはReact要素にアクセスできるようにする方法を提供します。

本質は、 ReactDOM.render()によって返されるコンポーネント インスタンスです。レンダリングされたコンポーネントの場合は、 domインスタンスを返します。DOM レンダリングの場合は、特定のdomノードを返します。

2. 使い方

refを作成するには 3 つの方法があります。

  • 文字列を渡し、this.refs によって渡された文字列の形式で対応する要素を取得します。
  • オブジェクトが渡されます。オブジェクトは React.createRef() によって作成されます。使用すると、作成されたオブジェクトの現在の属性は対応する要素になります。
  • DOM がマウントされたときにコールバックされる関数を渡します。この関数は、それ自体で保存できる要素オブジェクトを渡します。使用するときは、以前に保存した要素オブジェクトを直接取得するだけです。
  • フックを渡すと、フックはuseRef()メソッドによって作成され、使用されると、生成されたフックオブジェクトの現在の属性は対応する要素になります。

文字列を渡す

対応する要素またはコンポーネントにref属性を追加するだけです

クラスMyComponentはReact.Componentを拡張します。
  コンストラクタ(props) {
    スーパー(小道具);
    this.myRef = React.createRef();
  }
  与える() {
    <div ref="myref" /> を返します。
  }
}

現在のノードにアクセスする方法は次のとおりです。

this.refs.myref.innerHTML = "こんにちは";

受信オブジェクト

refsReact.createRef()で作成され、次のようにref属性がReact要素に追加されます。

クラスMyComponentはReact.Componentを拡張します。
  コンストラクタ(props) {
    スーパー(小道具);
    this.myRef = React.createRef();
  }
  与える() {
    <div ref={this.myRef} /> を返します。
  }
}

refrender内の要素に渡されると、そのノードへの参照はrefcurrentプロパティでアクセス可能になります。

定数ノード = this.myRef.current;

関数を渡す

refが関数として渡されると、レンダリングプロセス中に、コールバック関数パラメータは要素オブジェクトを渡し、インスタンスを通じてオブジェクトを保存します。

クラスMyComponentはReact.Componentを拡張します。
  コンストラクタ(props) {
    スーパー(小道具);
    this.myRef = React.createRef();
  }
  与える() {
    <div ref={element => this.myref = element} /> を返します。
  }
}

refオブジェクトを取得するには、以前に保存したオブジェクトを渡すだけです。

定数ノード = this.myref

フックを渡す

useRefを通じてrefを作成します。全体的な使用法はReact.createRefと一致します。

関数App(props) {
  定数 myref = useRef()
  戻る (
    <>
      <div ref={myref}></div>
    </>
  )
}

ref属性の取得は、 hookオブジェクトのcurrent属性を通じても行われます。

定数ノード = myref.current;

上記の 3 つのケースでは、ネイティブHTML要素でref属性が使用されます。ref ref設定されたコンポーネントがクラス コンポーネントの場合、 refオブジェクトはコンポーネントのマウントされたインスタンスを受け取ります。

関数コンポーネントにはインスタンスがないため、 ref属性を使用できないことに注意してください。

3. 応用シナリオ

場合によっては、 refsを使用してコンポーネントを更新しますが、この方法は推奨されません。多くの場合、 propsstateを使用して子要素を再レンダリングします。

refsを過度に使用すると、コンポーネント インスタンスまたはDOM構造が公開され、コンポーネントのカプセル化の原則に違反することになります。

たとえば、 Dialogコンポーネントでopen()メソッドとclose()メソッドを公開することは避け、 isOpenプロパティを渡す方がよいでしょう。

しかし、 refs次のシナリオで非常に役立ちます。

  • フォーカス制御、コンテンツ選択、DOM要素の制御
  • Dom要素のコンテンツ設定とメディア再生
  • DOM要素とコンポーネントインスタンスに対する操作
  • サードパーティのDOMライブラリを統合する

React refsの理解に関するこの記事はこれで終わりです。React refsの理解についてさらに詳しく知りたい方は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • React の 3 つの主要属性における Ref の使用に関する詳細な説明
  • React における ref の一般的な使用法の概要
  • React で refs を使用するチュートリアル
  • Reactコンポーネントrefsの使用に関する詳細な説明
  • React の Refs 属性をご存知ですか?

<<:  CentOS 7 に PHP5 用の suPHP をインストールする方法 (Peng Ge)

>>:  MySQL で複数の主キーが定義されているエラーの解決方法

推薦する

ファイルが存在するかどうかを判断する JavaScript サンプルコード

1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...

Linux のインスタンスにパブリック IP アドレスを割り当てる方法

説明するこのインターフェースを呼び出すときは、次の点に注意する必要があります。パブリック IP アド...

React Fragment の紹介と詳しい使い方

目次序文フラグメントの動機React Fragment の紹介と使用<React.Fragme...

Ubuntu 14 に Nginx-RTMP ストリーミング サーバーをインストールするチュートリアル

1. RTMP RTMP ストリーミング プロトコルは、Adobe が開発したリアルタイムのオーディ...

MySQL 8.0.12 のインストールと環境変数の設定チュートリアル (Win10 の場合)

Windows 10 プラットフォームでの MySQL のインストール、構成、起動、ログイン、環境...

Windows に Docker をインストールする詳細なチュートリアル

ローカルの MySQL バージョンが比較的低いため、最近 MySQL のバージョンをアップグレードす...

JavaScript カスタム カレンダー効果

この記事では、JavaScriptカスタムカレンダーエフェクトの具体的なコードを参考までに紹介します...

WeChat アプレット wxss で外部 CSS ファイルとアイコンフォントを参照する方法

原因外部ファイルをミニプログラムにインポートする方法は次のとおりです: @import "...

Linux オペレーティング システムの概要と紹介

目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...

Linux での Apache サービスの展開と構成

目次1 Apacheの役割2 Apacheのインストール3. Apacheを有効にする4 Apach...

mysql MDLメタデータロックの詳細な分析

序文: MySQL で SQL 文を実行すると、予想した時間内に文が完了しません。このような場合、通...

MySQL 外部キー (FOREIGN KEY) の使用例の詳細な説明

はじめに: すべてのデータを 1 つのテーブルに保存することのデメリット表の構成構造は複雑で不明瞭で...

ページスピードの最適化の概要

インターネットは人々の生活にますます欠かせないものになってきていると思います。 Ajax や fle...

js配列のfind、some、filter、reduceの違いの詳細な説明

Array の filter、find、some、reduce メソッドの違いを区別し、使用シナリオ...

Vue の proto ファイルの関数呼び出しのグラフィカルな説明

1. protoをコンパイルするすべての .proto ファイルを保存するために、src フォルダー...