Vue3 の ref と toRef の違いを簡単に分析します

Vue3 の ref と toRef の違いを簡単に分析します

1. refがコピーされ、ビューが更新されます

refを使用してオブジェクトのプロパティ値をレスポンシブデータに変換する場合

レスポンシブ データを変更しても元のデータには影響しません。

同時にビューも更新されます。

Ref はコピーを意味します。コピーしても元のデータには影響しません。

<テンプレート>
 <div>
    <div>
      <div>{{stateObj} </div>
       <button @click="func1">ボタン</button>
    </div>
 </div>
</テンプレート>
<スクリプト>
'vue' から {ref} をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    let obj={name:"张三",age:22}
    
    // オブジェクト内のプロパティをレスポンシブ データに変換します // オブジェクトをレスポンシブ データに変換する代わりに let stateObj=ref(obj.name)
    関数func1(){
      stateObj.value="張三が李斯になる";
      //元のデータは変更されていません。元のデータ obj {name: "张三", age: 22}
      console.log("元のデータ obj",obj)

      // レスポンシブデータが変更されました/**
      レスポンシブ stateObj RefImpl {
          _rawValue: "張三が李思になる", _shallow: false,
          __v_isRef: true、_value: "張三が李四になる"
      }
      **/
      // ref オブジェクトになります console.log("responsive stateObj",stateObj)

    }

    {stateObj,func1} を返す
},
}
</スクリプト>

2. toRefは参照なので、ビューは更新されません

toRefを使用してオブジェクトのプロパティをレスポンシブデータに変換する場合

レスポンシブデータを変更すると、元のデータに影響します

データがtoRefを通じて作成された場合、値が変更された後、データはビューをトリガーしません。

toRefは参照です。前のオブジェクトのプロパティを参照します。

したがって、変更すると、元のデータの値に影響します。

<テンプレート>
 <div>
    <div>
      <div>{{状態}}</div>
       <button @click="func1">ボタン</button>
    </div>
 </div>
</テンプレート>
<スクリプト>
'vue' から { toRef } をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    let obj={name:"张三",age:22}
    // オブジェクト内のプロパティ名をレスポンシブ データに変換します // オブジェクトをレスポンシブ データに変換する代わりに let state=toRef(obj, 'name');
    console.log('toRef',状態)
    関数func1(){
      state.value="私はLi Siです";
      コンソールログ('obj',obj)
      console.log('状態',状態)
    }
    {state,func1} を返す
  },
}
</スクリプト>

3. 結論

ref コピー、レスポンシブ データの変更、以前のデータには影響しませんが、インターフェイスは変更されます。

toRef 参照の場合、レスポンシブ データを変更すると以前のデータに影響し、インターフェイスは更新されません。

toRefの使用例

レスポンシブデータを元のデータに関連付けたい場合。

レスポンシブデータを更新した後、ビューを更新したくない場合は、toRefを使用できます。

まとめ:

refとtoRefの違い

(1)refの本質はコピーであり、応答データの変更は元のデータに影響を与えない。toRefの本質は参照関係であり、応答データの変更は元のデータに影響を与える。

(2)refデータが変更されると、インターフェースは自動的に更新される。toRefデータが変更されると、インターフェースは自動的に更新されない。

(3) toRefに渡されるrefは異なります。toRefは2つのパラメータを受け取ります。最初のパラメータはどのオブジェクトか、2番目のパラメータはオブジェクトのどの属性かです。

要約する

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

以下もご興味があるかもしれません:
  • setup+ref+reactive は vue3 の応答性を実装します
  • Vueのref属性の詳細な説明
  • Vue3 の参照と参照の詳細
  • Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介
  • Vue.js $refs 使用例の説明
  • Vue3.0 における Ref と Reactive の違いの詳細な分析
  • Vue3 における ref と reactive の詳細な説明と拡張
  • Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法
  • Vue での ref の使用法とデモンストレーション

<<:  MySQL 8.0.15 のインストールと設定のグラフィックチュートリアル

>>:  CentOS7 では、MySQL8 のマスター スレーブ バックアップと毎日のスケジュールされたフル バックアップが有効になります (推奨)

推薦する

訪問者を惹きつけるウェブサイトコンテンツを作成する14の方法

ネットサーフィンをしていると、私の注意を引こうとする美しいグラフィックでいっぱいの Web サイトを...

JavaScript における clientWidth、offsetWidth、scrollWidth の違い

1. コンセプトこれらはすべて Element の属性であり、要素の幅を示します。 Element....

MySQL の列から行への変換と年月グループ化の例

以下のように表示されます。 SELECT count(DISTINCT(a.rect_id)) zc...

React Hooksコンポーネント間で値を渡す方法の詳細な説明(tsを使用)

目次父から息子へ息子から父へクロスレベルコンポーネント(親から子孫)父から息子へpropsを通じて値...

Flex プログラム Firefox で中国語を入力すると文字化けするバグ

Firefox の下位バージョンでは中国語の文字を入力できず、上位バージョンでは文字化けした文字が表...

データベースを削除せずにMySQLのすべてのテーブルを素早く削除する方法

この記事では、例を使用して、データベースを削除せずに MySQL 内のすべてのテーブルをすばやく削除...

Nest.js 認証検証方法の例

目次0x0 はじめに0x1 RBAC 実装0x2 クレームベースの承認0x3 統合 CASL 0x4...

HTML テーブル マークアップ チュートリアル (40): ヘッダーの暗い境界線の色属性 BORDERCOLORDARK

テーブルヘッダーでは、暗い境界線の色を個別に定義できます。基本的な構文<TH 境界線の色を暗く...

HTML タグに類似: strong および em、q、cite、blockquote

XHTML には似た機能を持つタグがいくつかあります。もちろん、ここでの類似性とは意味の類似性を指...

HTMLはマウスをホバーしたときにテキストを表示するためにtitle属性を使用します。

コードをコピーコードは次のとおりです。 <a href=# title="ここに表示...

Linux で MySQL スケジュールタスクを実装する方法

前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます...

HTMLメタの大きな役割

メタ属性には、name と http-equiv の 2 つがあります。 name 属性は主に、We...

JavaScript でツリー構造を構築するための効率的なアルゴリズムについての簡単な説明

目次導入アイデアID配列インデックスのマッピング関係を確立するツリー構造の構築原理要約する導入組織階...

CentOS インストール mysql5.7 詳細チュートリアル

この記事では、参考までに、centOSにmysql5.7をインストールする詳細な手順を紹介します。具...

iviewは動的なフォームとカスタム検証期間の重複を実装します

フォーム項目を動的に追加するiview の動的なフォーム追加は非常に簡単です。フォーム項目を配列に設...