React コンポーネントで refs を使用する方法
この記事では主に React コンポーネント ref の詳しい使い方を紹介しますので、参考にしてください。
ref 名前が示すように、実際にはコンポーネントへの参照として見ることができ、またロゴであるとも言えます。コンポーネント属性として、その属性値は文字列または関数にすることができます。
実際には、ref の使用は必要ありません。 ref を使用して実装された関数は他のメソッドにも変換できるため、これが適用できるシナリオであっても、その必要はありません。ただし、ref には適用可能なシナリオがあるため、ref には独自の利点があることを意味します。これと ref の該当するシナリオに関して、公式ドキュメントには次のように書かれています:
render メソッドから UI 構造を返した後、React 仮想 DOM の制限を突破して、 によって返されたコンポーネント インスタンスで何かを呼び出すことができます。レンダリングメソッド。一般に、これはアプリケーションのデータ フローには必要ありません。これは、リアクティブ データ フローにより、最新のプロパティが render() からの各子出力に常に確実に渡されるためです。ただし、このアプローチを使用することが必要または有益なシナリオがまだいくつかあります。レンダリングされたコンポーネントの DOM マークアップ (DOM 識別 ID と考えることができます) を見つける、大規模な非 React アプリケーションで React コンポーネントを使用する、または、既存のコードを React に追加します。
そのようなシナリオを見てみましょう (次の例は ref を説明するためによく使用されるため、以下で説明するシナリオはより古典的であることがわかります): 要素の値が設定されます。イベントが空の文字列の場合、 要素がフォーカスされます。
var App = React.createClass({ getInitialState: function() { return {userInput: ''}; }, handleChange: function(e) { this.setState({userInput: e.target.value}); }, clearAndFocusInput: function() { this.setState({userInput: ''}); // 设置值为空字符串 //这里想要实现获得焦点 }, render: function() { return ( <p> <input value={this.state.userInput} onChange={this.handleChange} /> <input type="button" value="Reset And Focus" onClick={this.clearAndFocusInput} /> </p> ); } });
上記の例では、ボタンをクリックして値を空の文字列に設定するように入力要素に通知するように実装しましたが、フォーカスを取得する入力要素はまだ実装していません。 render() で返されるのはサブコンポーネントの実際の組み合わせではなく、特定の時点での特定のインスタンスの説明にすぎないため、これを実装するのは少し困難です。この文は非常にわかりにくいように思えます。実際、render は実際の DOM ではなく仮想 DOM を返します。したがって、render() から返されるコンポーネントだけに注目する必要はありません。
そういえば、集中力を高める方法についてはあまり役に立ちません。フォーカスを取得する機能を実現するには、ref を使用する必要があります。 ref 値には 2 種類あり、1 つは文字列で、もう 1 つはコールバック関数であると上で説明しました。
ref 文字列属性
React は、render() によって返されるコンポーネントに追加できる特別な属性をサポートしています。これは、 render() によって返されるコンポーネントがマークされているため、コンポーネント インスタンスを簡単に見つけることができることを意味します。これがrefの目的です。
ref の形式は次のとおりです
<input ref="myInput" />
このインスタンスにアクセスするには、this.refs を通じてアクセスできます:
this.refs.myInput
以前のバージョンでは、React.findDOMNode(this.refs.myInput) を通じてコンポーネントの DOM にアクセスできました。 。しかし現在、findDOMNode 関数は廃止され、this.refs.myInput を使用して直接アクセスできるようになりました。
ref コールバック関数
ref 属性は、名前の代わりにコールバック関数にすることもできます。この関数はコンポーネントがマウントされた直後に実行されます。参照されたコンポーネントは関数へのパラメーターとして使用され、コンポーネント パラメーターをすぐに使用することも、後で使用するために保存することもできます。
形式も比較的単純です:
render: function() { return <TextInput ref={(c) => this._input = c} } />; }, componentDidMount: function() { this._input.focus(); },
または
render: function() { return ( <TextInput ref={function(input) { if (input != null) { input.focus(); } }} /> ); },
ここで、参照コンポーネントがアンインストールされて参照が変更されると、前の参照のパラメータ値が null になることに注意してください。これにより、メモリ リークが効果的に防止されます。したがって、上記のコードには if 判定があります:
if(input != null){ input.focus(); }
ref の使用シナリオとメソッドは上で紹介されています。ここで、フォーカスを取得する関数を実現するために上記の例を完成させます
var App = React.createClass({ getInitialState: function() { return {userInput: ''}; }, handleChange: function(e) { this.setState({userInput: e.target.value}); }, clearAndFocusInput: function() { this.setState({userInput: ''}); // Clear the input // We wish to focus the <input /> now! if (this.refs.myTextInput !== null) { this.refs.myTextInput.focus(); } }, render: function() { return ( <p> <input value={this.state.userInput} onChange={this.handleChange} ref=”myTextInput” /> <input type="button" value="Reset And Focus" onClick={this.clearAndFocusInput} /> </p> ); } }); ReactDOM.render( <App />, document.getElementById('content') );
この例では、render 関数です。 インスタンスの説明を返します。ただし、実際のインスタンスは this.refs.myTextInput を通じて取得されます。 render によって返されるサブコンポーネントに ref="myTextInput" がある限り、this.refs.myTextInput は正しいインスタンスを取得します。
上記は私があなたのためにまとめたものです。
関連記事:
vue-cli+webpackプロジェクトを通じてプロジェクト名を変更する方法
vueコンポーネントでグローバル登録とローカル登録を実装する方法
以上がReact コンポーネントで refs を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









React と WebSocket を使用してリアルタイム チャット アプリケーションを構築する方法 はじめに: インターネットの急速な発展に伴い、リアルタイム コミュニケーションがますます注目を集めています。ライブチャット アプリは、現代の社会生活や仕事生活に不可欠な部分になっています。この記事では、React と WebSocket を使用して簡単なリアルタイム チャット アプリケーションを構築する方法と、具体的なコード例を紹介します。 1. 技術的な準備 リアルタイム チャット アプリケーションの構築を開始する前に、次のテクノロジとツールを準備する必要があります。 React: 構築用の 1 つ

React フロントエンドとバックエンドの分離ガイド: フロントエンドとバックエンドの分離と独立したデプロイメントを実現する方法、特定のコード例が必要です 今日の Web 開発環境では、フロントエンドとバックエンドの分離がトレンドになっています。フロントエンド コードとバックエンド コードを分離することで、開発作業がより柔軟かつ効率的になり、チームのコラボレーションが促進されます。この記事では、React を使用してフロントエンドとバックエンドの分離を実現し、それによって分離と独立したデプロイの目標を達成する方法を紹介します。まず、フロントエンドとバックエンドの分離とは何かを理解する必要があります。従来の Web 開発モデルでは、フロントエンドとバックエンドが結合されています。

React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 はじめに: インターネットの発展に伴い、Web アプリケーションのニーズはますます多様化および複雑化しています。使いやすさとパフォーマンスに対するユーザーの要件を満たすために、最新のテクノロジー スタックを使用してネットワーク アプリケーションを構築することがますます重要になっています。 React と Flask は、フロントエンドおよびバックエンド開発用の 2 つの非常に人気のあるフレームワークであり、うまく連携してシンプルで使いやすい Web アプリケーションを構築します。この記事では、React と Flask を活用する方法について詳しく説明します。

React と RabbitMQ を使用して信頼性の高いメッセージング アプリケーションを構築する方法 はじめに: 最新のアプリケーションは、リアルタイム更新やデータ同期などの機能を実現するために、信頼性の高いメッセージングをサポートする必要があります。 React はユーザー インターフェイスを構築するための人気のある JavaScript ライブラリであり、RabbitMQ は信頼性の高いメッセージング ミドルウェアです。この記事では、React と RabbitMQ を組み合わせて信頼性の高いメッセージング アプリケーションを構築する方法を紹介し、具体的なコード例を示します。 RabbitMQ の概要:

React レスポンシブ デザイン ガイド: アダプティブ フロントエンド レイアウト効果を実現する方法 モバイル デバイスの人気と、マルチスクリーン エクスペリエンスに対するユーザーの需要の高まりに伴い、レスポンシブ デザインは最新のフロントエンド開発における重要な考慮事項の 1 つとなっています。 React は、現在最も人気のあるフロントエンド フレームワークの 1 つであり、開発者がアダプティブ レイアウト効果を実現するのに役立つ豊富なツールとコンポーネントを提供します。この記事では、React を使用してレスポンシブ デザインを実装するためのガイドラインとヒントをいくつか紹介し、参考として具体的なコード例を示します。 Reactを使用したファイル

React コード デバッグ ガイド: フロントエンドのバグをすばやく見つけて解決する方法 はじめに: React アプリケーションを開発するとき、アプリケーションをクラッシュさせたり、不正な動作を引き起こしたりする可能性のあるさまざまなバグに遭遇することがよくあります。したがって、デバッグ スキルを習得することは、すべての React 開発者にとって不可欠な能力です。この記事では、フロントエンドのバグを見つけて解決するための実践的なテクニックをいくつか紹介し、読者が React アプリケーションのバグをすばやく見つけて解決できるようにする具体的なコード例を示します。 1. デバッグツールの選択: In Re

ReactRouter ユーザーガイド: フロントエンドルーティング制御の実装方法 シングルページアプリケーションの人気に伴い、フロントエンドルーティングは無視できない重要な部分になりました。 React エコシステムで最も人気のあるルーティング ライブラリとして、ReactRouter は豊富な機能と使いやすい API を提供し、フロントエンド ルーティングの実装を非常にシンプルかつ柔軟にします。この記事では、ReactRouter の使用方法と具体的なコード例を紹介します。 ReactRouter を最初にインストールするには、次のものが必要です

React と Google BigQuery を使用して高速データ分析アプリケーションを構築する方法 はじめに: 今日の情報爆発の時代において、データ分析はさまざまな業界で不可欠なリンクとなっています。中でも、高速かつ効率的なデータ分析アプリケーションを構築することは、多くの企業や個人が追求する目標となっています。この記事では、React と Google BigQuery を使用して高速データ分析アプリケーションを構築する方法を紹介し、詳細なコード例を示します。 1. 概要 React はビルドするためのツールです
