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 マスタースレーブレプリケーションの注意事項の説明

推薦する

JavaScript マクロタスクとマイクロタスクの実行順序についての簡単な説明

目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...

この記事では、jsのデータ型とデータ構造の世界を紹介します。

目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...

フラッシュコンテンツの表示に使用される OBJECT タグと EMBED タグの違いの紹介

1. はじめに:ウェブページにフラッシュ コンテンツを正常に表示したい場合は、ページ上のフラッシュ ...

要素 UI に基づいてクエリ コンポーネントを段階的にカプセル化する方法

目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...

CSS マージンの重複とその防止方法

2 つ以上のブロックレベル ボックスの垂直に隣接するエッジが重なり合っています。結果として得られる境...

CSS3はブラウザのスクロールバーのスタイルを変更します

注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...

MySQLデータ遅延ジャンプの問題の解決策

今日は、データベース遅延ジャンプに関する別の典型的な問題を分析しました。このプロセスでは、参考のため...

Vue3サンドボックスの仕組みの詳しい説明

目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する参照する序文vue3サンドボック...

Vueパンくずコンポーネントのカプセル化方法

Vueはパンくずコンポーネントをカプセル化して参照します。具体的な内容は次のとおりです。効果を達成す...

jQueryは時間セレクタを実装する

この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...

MySQLクライアント認証後の接続失敗の問題に対する完璧なソリューション

MySQL 環境をローカル (192.168.1.152) にデプロイし、リモート クライアント 1...

Gearman + MySQL による永続化操作例

この記事では、gearman+mysql メソッドを使用して永続化操作を実装します。ご参考までに、詳...

div の高さをブラウザの高さに合わせて調整する方法

この古くからある疑問は、数え切れないほどのフロントエンド開発者やバックエンドプログラマーを悩ませてき...

ブラウザでのjsのイベントループイベントキューの詳細な説明

目次序文スタックと2つのキューを理解する実行プロセス簡単な例より難しい例要約する序文以下の内容はブラ...

シンプルなスネークゲームを実現するネイティブjs

この記事では、スネークゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容...