Refsとは何かRef は、レンダリング メソッドで作成された DOM ノードまたは React 要素にアクセスできるようにする方法を提供します。 参照 Ref 転送は、特定のコンポーネントが ref を受信してそれを子コンポーネントに渡す (つまり、「転送する」) ことを可能にするオプションの機能です。 デフォルトでは、関数コンポーネントにはインスタンスがないため、ref 属性は使用できません。 1. 文字列参照文字列参照にいくつかの問題があるため、このメソッドを使用することはお勧めしません。これは非推奨であり、将来のバージョンで削除される可能性があります。 「react」からReactをインポートします。 // 親コンポーネントのエクスポート デフォルトクラス StringRef は React.PureComponent を拡張します { コンポーネントマウント() { console.log("stringRefDom:", this.refs.stringRefDom); console.log("stringRefComp:", this.refs.stringRefComp); } 与える() { 戻る ( <div> ネイティブ コンポーネントの使用方法*/ <div ref={"stringRefDom"}>文字列参照Dom</div> クラスコンポーネントの使用方法*/ <StringRefComp ref={"stringRefComp"} /> </div> ); } } //クラスコンポーネントクラスStringRefCompはReact.PureComponentを拡張します{ 与える() { <div>StringRefComp</div> を返します。 } } 2. コールバック参照
「react」からReactをインポートします。 // 親コンポーネントのエクスポート デフォルトクラス CallbackRef は React.PureComponent を拡張します { コンストラクタ(props) { スーパー(小道具); this.callbackRefDom = null; this.callbackRefComp = null; } コンポーネントマウント() { console.log("コールバックRefDom:", this.callbackRefDom); console.log("コールバックRefComp:", this.callbackRefComp); } //コールバック関数 setCallbackRefDom = (ref) => { this.callbackRefDom = ref; }; setCallbackRefComp = (ref) => { this.callbackRefComp = ref; }; //コールバック関数render() { 戻る ( <div> <div ref={this.setCallbackRefDom}>コールバックRefDom</div> <CallbackRefComp ref={this.setCallbackRefComp} /> </div> ); } } //クラスコンポーネントクラスCallbackRefCompはReact.PureComponentを拡張します{ 与える() { <div>callbackRefComp</div> を返します。 } } React.createRef()
「react」からReactをインポートします。 // 親コンポーネントのエクスポート デフォルトクラス CreateRef は React.PureComponent を拡張します { コンストラクタ(props) { スーパー(小道具); React のインスタンスを作成します。 this.createRefComp = React.createRef(); } コンポーネントマウント() { console.log("createRefDom:", this.createRefDom.current); console.log("createRefComp:", this.createRefComp.current); } 与える() { 戻る ( <div> <div ref={this.createRefDom}>RefDom を作成します</div> <CreateRefComp ref={this.createRefComp} /> </div> ); } } //クラスコンポーネントクラスCreateRefCompはReact.PureComponentを拡張します{ 与える() { <div>CreateRefComp</div> を返します。 } } 4. 参照
React をインポートし、{useEffect} を "react" から取得します。 // 親コンポーネント const UseRef = React.memo(() => { // // 以下も使用できます // const createRefDom = React.createRef(); // const createRefComp = React.createRef(); React のインスタンスを 1 つ作成します。 React のインスタンスを作成します。 使用効果(() => { console.log("useRefDom:", createRefDom.current); console.log("useRefComp:", createRefComp.current); }, []); 戻る ( <div> <div ref={createRefDom}>useRefDom</div> <UseRefComp ref={createRefComp} /> </div> ); }); デフォルトのUseRefをエクスポートします。 //クラスコンポーネントクラスUseRefCompはReact.PureComponentを拡張します{ 与える() { <div>useRefComp</div> を返します。 } } 5. 参照と関数コンポーネント
「react」から React をインポートし、{useEffect、useImperativeHandle} を追加します。 // 親コンポーネント const ForwardRef = React.memo(() => { React のインスタンスを作成します。 React の RefCompMethod を const として定義します。 使用効果(() => { console.log("useRefComp:", createRefComp.current); console.log("createRefCompMethod:", createRefCompMethod.current); createRefComp.current.reload(); }, []); 戻る ( <div> <ForwardRefFunc ref={createRefComp} /> </div> ); }); デフォルトの ForwardRef をエクスポートします。 const RefFunc = React.forwardRef((props, ref) => { const [name, setName] = React.useState(null); 定数リロード = () => { console.log("リロード"); タイムアウトを設定する(() => { 名前を設定します("ForwardRefFunc"); }, 3000); }; //useImperativeHandle を使用すると、refuseImperativeHandle(ref, () => { を使用するときに親コンポーネントに公開されるインスタンス値をカスタマイズできます。 戻る { リロード: リロード、 }; }); <div ref={ref}>ForwardRefFunc {name}</div> を返します。 }); React の RefFunc を実装します。 forwardRef と useImperativeHandle の最終的な目標は、呼び出し可能なオブジェクトを参照に提供することです。
要約するこれで、React での ref の一般的な使用法に関するこの記事は終了です。React での ref の使用法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...
目次算術演算子異常状況1: 特殊値リテラルを含む操作異常な状況 2: 他の種類のデータが数学演算に関...
最近Tencent Cloudサーバーを購入し、環境を構築しました。このメモは、これまで MySQL...
序文このブログ記事が公開された後、何人かの友人からSQL Serverバージョンがあるかどうか尋ねら...
目次1. インターフェース定義2. 属性2.1 オプション属性2.2 読み取り専用プロパティ3. ク...
目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...
解決策:クリック イベントをオーディオ コンポーネントにバインドし、再生メソッドと一時停止メソッドを...
初心者は自分で録音しましょう1. スーパーバイザーをインストールします。 Supervisor は ...
オープンプラットフォームの増加に伴い、そこから派生するさまざまなアプリケーションサービスも増加傾向に...
目次1. パラダイム基盤1.1 パラダイムの概念2. 3つの主要なパラダイム2.1 3つの主要なパラ...
目次1. 監視ポート関係の説明操作する2. 監視サービス関係の説明操作する3. テンプレートのインポ...
MySQL には多くのデータベース管理ツールがあります。作業効率の向上に役立つ優れた GUI ツール...
目次機能コンポーネント子コンポーネントの分割ローカル変数v-show によるDOMの再利用キープアラ...
目次リナックス1. crontabの基本的な使い方2. ログを有効にする3. スケジュールされたタス...
目次1. はじめに2. 実際の事例1. App.vueを変更する2. レイアウトを調整する3. ジャ...