Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

1. セットアップを始める

次のコード関数を簡単に紹介します。
ref 関数を使用して変数の変更を監視し、それをビューにレンダリングします。
setUp 関数は、結合された API のエントリ関数です。これはとても重要です。
setUp は変数の変更を監視できます。私たちはそれを使用します
ref は vue に組み込まれており、インポートする必要があります。

<テンプレート>
 <div>{{ countNum} } } }
 <button @click="handerFunc">ボタン</button>
</テンプレート>
<スクリプト>
'vue' から {ref} をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定() {
    // この文は、変数 count が定義されていることを意味します。この変数の初期値は100です
    countNum = ref(100)とします。

    // 結合された API では、メソッドを定義する場合、メソッド内で定義する必要はありません。関数handerFunc(){を直接定義するだけです
      // console.log(countNum); //countNum はオブジェクトです countNum.value += 10;
    }
    // 結合された API で定義されたメソッドまたは変数。外部で必要な場合は、return {aaa,func} return {countNum,handerFunc} を通じて公開する必要があります。
  }
}
</スクリプト> 

2. リアクティブの使用を理解する

ref 関数は、単純な型のデータの変更のみを監視できます。
複合型 (配列、オブジェクト) の変更を監視することはできません。
そこで反応的な主人公が登場します。
セットアップ内の機能は自動的に 1 回実行されます。

<テンプレート>
 <div>
   <ul>
     <li v-for="satte.arr内のアイテム" :key="item.id">
       {{item.name}}
     </li>
   </ul>

 </div>
</テンプレート>
<スクリプト>
'vue' から {reactive} をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    console.log("setUp は自動的に実行されます")
    // ref 関数に関する注意:
    // ref 関数は単純なデータ型のみを監視でき、複雑なデータ型 (配列、オブジェクト) は監視できません。
    // リアクティブメソッドにはオブジェクトが含まれています let satte=reactive({
       編曲:[
         {name:"Si Teng",id:'0011'},
         {name:"アンダー・ザ・スキン",id:'0011'},
         {name:"百年の約束",id:'0012'},
         {name:"三生三世",id:'0013'},
       ]
    })
    返す { satte }
  },
}
</スクリプト>

3. リアクティブを使用する

ビューの削除

<テンプレート>
 <div>
   <ul>
     <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)">
       {{item.name}}
     </li>
   </ul>

 </div>
</テンプレート>
<スクリプト>
'vue' から {reactive} をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    satte = react({
       編曲:[
         {name:"Si Teng",id:'0011'},
         {name:"アンダー・ザ・スキン",id:'0011'},
         {name:"百年の約束",id:'0012'},
         {name:"三生三世",id:'0013'},
       ]
    })
    // クリックされた要素を削除する function del(index){
      for(let i=0;i<satte.arr.length;i++){
        if(インデックス==i){
          satte.arr.splice(i,1) は、
        }
      }
    }
    戻り値 { satte, del}
  },
}
</スクリプト> 

4. 削除ロジックを分離する

別モジュールを形成する

<テンプレート>
 <div>
   <ul>
     <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)">
       {{item.name}}
     </li>
   </ul>

 </div>
</テンプレート>
<スクリプト>
'vue' から {reactive} をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    // onlyDelLuoJi() メソッドには配列とメソッドが含まれており、分解と同様です。let {satte,del }=onlyDelLuoJi();
    
    // 外部に公開する return {sate,del}
  },
}

関数onlyDelLuoJi(){
   satte = react({
       編曲:[
         {name:"Si Teng",id:'0011'},
         {name:"アンダー・ザ・スキン",id:'0011'},
         {name:"百年の約束",id:'0012'},
         {name:"三生三世",id:'0013'},
       ]
    })
    // クリックされた要素を削除する function del(index){
      for(let i=0;i<satte.arr.length;i++){
        if(インデックス==i){
          satte.arr.splice(i,1) は、
        }
      }
    }
    //データ satte とメソッド del を公開する return { satte,del }
}
</スクリプト>

5. 追加機能を実装する

イベント間でパラメータを渡す

<テンプレート>
 <div>
   <div>
      <input type="text" v-model="addobj.watchTv.name">
      <button @click="addHander">追加</button>
   </div>
   
   <ul>
     <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)">
       {{item.name}}
     </li>
   </ul>

 </div>
</テンプレート>
<スクリプト>
'vue' から {reactive} をインポートします
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    // onlyDelLuoJi() メソッドには配列とメソッドが含まれており、分解と同様です。let {satte,del }=onlyDelLuoJi();
    
    // 渡されたパラメータ satte は、onlyDelLuoJi 関数で提供される satte です。パスlet { addobj,addHander }=OnlyaddHander(satte);

    // 外部に公開する return {sate,del,addobj, addHander}
  },
}

//関数モジュールを追加する function OnlyaddHander(satte){
  console.log('initialize add', satte)
    addobj = リアクティブ({
        テレビを見る:{
          名前:""、
          id:""
        }
     });

    関数addHander(){
      // 間違ったメソッドをリセットしてクリアします // satte.arr.push(addobj.watchTv)
        // addobj.watchTv.name = ""; 
        // addobj.watchTv.id = "";
        

          // 正しいアプローチ let oldobj = Object.assign({}, addobj.watchTv)
        satte.arr.push(oldobj)
    }
    戻り値: { addobj, addHander }
}

//関数モジュール関数のみ削除DelLuoJi(){
  console.log('初期化を削除')
   satte = react({
       編曲:[
         {name:"Si Teng",id:'0011'},
         {name:"アンダー・ザ・スキン",id:'0011'},
         {name:"百年の約束",id:'0012'},
         {name:"三生三世",id:'0013'},
       ]
    })
    // クリックされた要素を削除する function del(index){
      for(let i=0;i<satte.arr.length;i++){
        if(インデックス==i){
          satte.arr.splice(i,1) は、
        }
      }
    }
    //データ satte とメソッド del を公開する return { satte,del }
}
</スクリプト>

6 別々のファイルに抽出する

追加と削除のロジックを別のファイルに分離したいと考えています。
add.jsは関連するロジックを追加するものです
del.jsは削除ロジックです

「vue」から{reactive}をインポートします
関数OnlyaddHander(satte){
  console.log('initialize add', satte)
    addobj = リアクティブ({
        テレビを見る:{
          名前:""、
          id:""
        }
     });
    関数addHander(e){
        // 間違ったメソッドをリセットしてクリアします // satte.arr.push(addobj.watchTv)
        // addobj.watchTv.name = ""; 
        // addobj.watchTv.id = "";
        // 正しいアプローチ let oldobj = Object.assign({}, addobj.watchTv)
        satte.arr.push(oldobj)
        e.preventDefault();
    }
    戻り値: { addobj, addHander }
}
エクスポートデフォルトOnlyaddHander

アデル

「vue」から{reactive}をインポートします
関数onlyDelLuoJi() {
  console.log('初期化を削除')
   satte = react({
       編曲:[
         {name:"Si Teng",id:'0011'},
         {name:"アンダー・ザ・スキン",id:'0011'},
         {name:"百年の約束",id:'0012'},
         {name:"三生三世",id:'0013'},
       ]
    })
    // クリックされた要素を削除する function del(index){
      for(let i=0;i<satte.arr.length;i++){
        if(インデックス==i){
          satte.arr.splice(i,1) は、
        }
      }
    }
    //データ satte とメソッド del を公開する return { satte,del }
}
エクスポートデフォルトのみDelLuoJi

メインファイル

<テンプレート>
 <div>
   <div>
      <input type="text" v-model="addobj.watchTv.name">
      <button @click="addHander">追加</button>
   </div>
   
   <ul>
     <li v-for="(item,index) in satte.arr" :key="index" @click="del(index)">
       {{item.name}}
     </li>
   </ul>

 </div>
</テンプレート>
<スクリプト>
「./components/del」からonlyDelLuoJiをインポートします。
「./components/add」からOnlyaddHanderをインポートします。
エクスポートデフォルト{
  名前: 'アプリ'、
  設定(){
    // onlyDelLuoJi() メソッドには配列とメソッドが含まれており、分解と同様です。let {satte,del }=onlyDelLuoJi();
    
    // パラメータを渡す let { addobj,addHander }=OnlyaddHander(satte);

    // 外部に公開する return {sate,del,addobj, addHander}
  },
}
</スクリプト>

以上がvue3組み合わせAPIにおけるsetup、ref、reactiveの詳しい使い方です。vue組み合わせAPIの詳細については、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • vue3 の setUp とリアクティブ関数の使用方法の詳細な説明
  • Vue3 における ref と reactive の詳細な説明と拡張
  • Vue3 のリアクティブリセットの問題と解決策

<<:  MySQL ALTERコマンドの知識ポイントのまとめ

>>:  Mysql マスタースレーブレプリケーションの注意事項の説明

推薦する

VMware仮想マシンを使用してUbuntu 20.04をインストールする完全なチュートリアル

Ubuntu は比較的人気のある Linux デスクトップ システムです。最近、Ubuntu 20....

Vueはマーキースタイルのテキストの水平スクロールを実装します

この記事では、マーキースタイルのテキストの水平スクロールを実現するためのVueの具体的なコードを参考...

hasLayout によって発生する CSS バグの一覧

IE には長い間問題がありました。誰もがテストを受けたとき、誰もが笑顔でしたが、それはただのニヤニヤ...

MySQL SELECT文の実行方法

MySQL Select ステートメントはどのように実行されますか?最近、Geek Time で D...

Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明

0x0 パラメータ検証Nest.jsでは、パラメータ検証業務のほとんどをパイプライン方式で実装してい...

MySQL トランザクション分離レベルの原則例分析

導入あなたも面接でこれに遭遇したことがあるはずです。トランザクションの分離レベルについてお話ししまし...

要素のel-tree複数選択ツリー(チェックボックス)親子ノードの関連付けが関連付けられていません

属性チェック-厳密公式ドキュメントでは、チェックボックスが表示されるときに親項目と子項目を互いに関連...

Docker イメージのプルとタグ操作 pull | tag

Fabric プロジェクトのソースコードを読み直してみたところ、Docker の部分でよくわからな...

DockerとFastDFSのインストールコマンドと使い方の詳しい説明

Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...

Vueでブラウザタイトルを動的に設定する方法の詳細な説明

目次ナンセンス文章最初ルーター/index.js 2番目1. プラグインをインストールする2.mai...

カスタムスクロールバー効果を実現するJavaScript

実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

MySQLテクノロジーにおけるInnoDBロックの詳細な説明

目次序文1. ロックとは何ですか? 2. InnoDBストレージエンジンのロック2.1 ロックの種類...

DockerにJava環境をインストールするための実装手順

この記事は Linux centos8 をベースにして、docker をインストールし、イメージをプ...

docker compose デプロイメントにおけるマスタースレーブレプリケーションの実装

目次構成解析サービス構築ディレクトリ構造ファイルを作成インスタンス構成サービスを開始するテストRed...