Vue3 では、レスポンシブ データを作成するための新しいメソッドがいくつか追加されました。もちろん、それぞれの機能も異なります。各メソッドには独自のアプリケーション シナリオがあります。今日は、ref、toRef、toRefs とは何かについて説明します。使い方の違いは何でしょうか?最も良い使い方は何でしょうか? 1. 基本1.参照(1)値型のレスポンシブデータを生成し、.valueを通じて値を変更する <テンプレート> <div>{{ ageRef } } </テンプレート> <スクリプト> 'vue' から { ref } をインポートします エクスポートデフォルト{ 設定() { 定数ageRef = ref(20) 間隔を設定する(() => { 年齢参照値 += 1 }, 1000) 戻る { 年齢参照 } }, } </スクリプト> 上記のコードは ageRef 変数を定義し、ageRef を毎秒 1 ずつ増加させます。ページに表示される値も 1 ずつ増加します。 (2)反応性にも使える 上記のコードを以下のように変更し、reactive定義変数をインポートし、ref定義変数をreactiveにインポートし、テンプレートにreactive変数を表示します。最終的な効果は上記(1)と同じです。 <テンプレート> <div>{{ info.age }}</div> </テンプレート> <スクリプト> 'vue' から { ref, reactive } をインポートします エクスポートデフォルト{ 設定() { 定数ageRef = ref(20) const 情報 = リアクティブ({ 年齢: ageRef }) 間隔を設定する(() => { 年齢参照値 += 1 }, 1000) 戻る { 情報 } }, } </スクリプト> (3)ドムを得るために使用できる <テンプレート> <div ref="eleDom">ref-dom-test</div> </テンプレート> <スクリプト> 'vue' から { ref, onMounted } をインポートします エクスポートデフォルト{ 設定() { const eleDom = ref(null) マウント時(() => { console.log(eleDom.value.innerHTML) // ref-dom-テスト }) 戻る { エレドム } }, } 上記コードのコンソールには ref-dom-test が出力され、Dom 要素が取得されたことが示されます。 定義された ref 変数名は、コード内の eleDom など、テンプレート ref の値と一致している必要があります。 2. 参照
次のコードを見てみましょう <テンプレート> <div>{{ state.age }} --- {{ ageRef }}</div> </テンプレート> <スクリプト> 'vue' から { toRef, reactive } をインポートします。 エクスポートデフォルト{ 設定() { 定数状態 = リアクティブ({ 名前: 'JL', 年齢: 18 }) const ageRef = toRef(状態、'年齢') タイムアウトを設定する(() => { 状態.年齢 = 20 }, 1000) タイムアウトを設定する(() => { 年齢参照値 = 21 }, 2000) 戻る { 州、 年齢参照 } }, } </スクリプト> 上記のコードでは、toRef を使用して state の age プロパティをレスポンシブ変数に変換しています。その後、1 秒後に state の age 値が 20 に変更され、その時点で ageRef も 20 になります。2 秒後に ageRef の値が 21 に変更され、その時点で state の age 値も 21 になり、2 つが相互参照関係を維持していることを示します。 toRef は応答性のためのものであり、通常のオブジェクトではありません。応答性のない目的で使用すると、出力結果は応答性がなくなります。 3. 参照
次のコードを見てみましょう <テンプレート> <div>{{ 名前 }}---{{ 年齢 }}}</div> </テンプレート> <スクリプト> 'vue' から { reactive, toRefs } をインポートします。 エクスポートデフォルト{ 設定() { 定数状態 = リアクティブ({ 名前: 'JL', 年齢: 18 }) 定数stateRefs = toRefs(状態) タイムアウトを設定する(() => { 状態.年齢 = 20 }, 1000) タイムアウトを設定する(() => { 状態参照年齢値 = 21 }, 2000) stateRefsを返す }, } </スクリプト> 上記のコードでは、toRefs を使用して state を通常のオブジェクトに変換しています。このとき、stateRefs は直接返すことができ、name と age はテンプレート内で直接呼び出すことができます。そして、1 秒後に state の age 値が 20 に変更され、ページ上の age 値も 20 になります。2 秒後には、stateRefs の name 値が 21 に変更され、ページ上の age 値も 21 になり、両者が相互参照関係を維持していることを示します。 toRefs がレスポンシブ オブジェクトを通常のオブジェクトに変換した後、各属性にはレスポンシブ ref が設定されます。このとき、その値を取得するには .value を使用する必要があります。 4. 最適な使い方
例えば: <テンプレート> <div>x:{{x}} y:{{y}}</div> </テンプレート> <スクリプト> 'vue' から { reactive, toRefs } をインポートします。 エクスポートデフォルト{ 設定() { 関数テスト() { 定数状態 = リアクティブ({ x: 1, 年: 2 }) 参照を返す(状態) } 定数{x, y} = テスト() タイムアウトを設定する(() => { x.値 = 2 }, 1000) 戻る { ×、 ええ } } } </スクリプト> 上記のコードでは、テスト関数内でレスポンシブオブジェクトの状態を定義し、それを通常のオブジェクトに変換してtoRefsを通じて返しています。このとき、構造を割り当てることができ、値はレスポンシブです。 2. 詳細な1. なぜrefが必要なのか?上で述べたように、reactive と toRef を使用すると、値の型をレスポンシブなものに変換することもできますが、それでも ref が必要なのはなぜでしょうか。
2. ref に .value が必要な理由ref は値を取得するために .value を追加する必要があるのはなぜですか? なぜ面倒なのでしょうか?
3. toRef と toRefs が必要なのはなぜですか?
Vue3 の ref toRef と toRefs の違いを理解する方法についての記事はこれで終わりです。Vue3 の ref toRef と toRefs に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: mysql-connector-java8.0.27 へのアップグレードに関する注意事項
mysql ストレージ エンジン: MySQL サーバーはモジュール スタイルを採用しており、特にス...
Linux でファイルを編集した後、保存して終了するにはどうすればよいですか?保存して終了するコマン...
目次1. ユニオンタイプ2. クロスオーバータイプ3. 型保護3.1 カスタム型保護3.2 保護の種...
この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...
マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...
目次序文sudo書き込み権限を追加するgit 2.9.0をインストールopenssl 1.1.1l ...
ajax 処理後にサーバーから返される responseText が JSON データであるという問...
目次MVCとMVVMの違い前述のMVCC の概要長所と短所MVVM概要MVVM 実装者 — Vue ...
コードは次のようになります。 <!DOCTYPE html> <html> ...
この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...
この記事では、例を使用して、MySQL スライディング集計/年初来集計の原理と使用方法を説明します。...
複数の Docker コンテナがデプロイされたサーバーがあり、各 Docker コンテナが stde...
Linux でバージョン情報を表示する方法。ビット数、バージョン情報、CPU コア情報、CPU 固有...
目次索引- 総合索引- ユニークなインデックス- 主キーインデックス- 複合インデックス- 全文索引...
1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...