React コンポーネント ref の用途は何ですか? React コンポーネントの refs の役割とその使用法の詳細な説明

寻∝梦
リリース: 2018-09-11 15:34:44
オリジナル
3285 人が閲覧しました

この記事では主に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: ''}); // 値を空の文字列に設定します

},
使用する 使用する 使用する 使用する 使用するspul spout splow sele speed off 's' 'を介して - - から - ‐ ‐ ‐ ‐ ‐ ‐ ‐ clearandfocusinput:function()to}、
(){
自体は復帰しています(
リセットとフォーカス」
上記の例では、ボタンをクリックして値が空の文字列に設定されるように入力要素に通知する機能を実装しましたが、入力要素がフォーカスを取得できるようにする機能はまだ実装されていません。 render() で返されるのはサブコンポーネントの実際の組み合わせではなく、特定の時点での特定のインスタンスの説明にすぎないため、これを実装するのは少し困難です。この文は非常にわかりにくいように思えますが、実際、render が返すのは、実際の DOM ではなく、

仮想 DOM

です。したがって、render() から返されるコンポーネントだけに注目する必要はありません。

そういえば、集中力を高める方法についてはあまり役に立ちません。フォーカスを取得する機能を実現するには、ref を使用する必要があります。 ref 値には 2 種類あり、1 つは文字列で、もう 1 つはコールバック関数であると上で説明しました。


ref文字列属性

React は、render() によって返されるコンポーネントに追加できる特別な属性をサポートしています。これは、 render() によって返されるコンポーネントがマークされているため、コンポーネント インスタンスを簡単に見つけることができることを意味します。これがrefの目的です。

ref は次の形式です

このインスタンスにアクセスするには、this.refs を通じてアクセスできます:

this.refs.myInput

以前のバージョンでは、 React.findDOMNode(this.refs.myInput) を通じてコン​​ポーネントの DOM にアクセスできます。しかし現在、findDOMNode 関数は廃止され、this.refs.myInput を使用して直接アクセスできるようになりました。 (さらに詳しく知りたい場合は、PHP 中国語 Web サイトReact Reference Manual の列にアクセスして学習してください)

ref コールバック関数

ref 属性は、名前の代わりにコールバック関数にすることもできます。この関数はコンポーネントがマウントされた直後に実行されます。参照されたコンポーネントは関数のパラメーターとして使用され、コンポーネント パラメーターをすぐに使用することも、後で使用するために保存することもできます。

フォームも比較的単純です:

render: function() {
return this._input = c} } />;
},
componentDidMount: function( ) {
this._input.focus();
}、

または

render: function() {
return (
) ref={function(input) {
if (input != null) {
入力。フォーカス();これにより、メモリ リークが効果的に防止されます。したがって、上記のコードでは 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: ''}); // 入力をクリアします
// 今すぐ にフォーカスしたいです!
if (this .refs.myTextInput !== null) {
this.refs.myTextInput.focus();
}
},
render: function() {
return (


value={this .state.userInput}
onChange={this.handleChange}
ref=”myTextInput”
/>
type="button"
value="リセットしてフォーカス"
onClick={this.clearAndFocusInput }
/>


);
}
});
ReactDOM.render(
,
document.getElementById('content')
);

在この例では、 render 関数数を返す一个 ただし、実際の例は this.refs を参照してください。 myTextInput を取得します。返される特定の子コンポーネント バンドルに ref="myTextInput" 、this.refs をレンダリングするだけです。 myTextInput は正しい例を取得します。

上は ref のすべての内容であり、ref についてはコンポーネントへの参照を参照できます。

React は手動を使用します

対象中学校)、以下に注意点がある可能性があります。

以上がReact コンポーネント ref の用途は何ですか? React コンポーネントの refs の役割とその使用法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート