Vue3 コンポジション API の紹介

Vue3 コンポジション API の紹介

Vue3.0 は 7 月に rc 版をリリースしました。vue-cli4.5 以降では、体験版として vue3 を代替バージョンとして選択することもサポートされています。vue3 の正式版もそう遠くないと思われます。もう学べない!!!!
vue2.0 バージョン (Option API) と比較すると、Composition API は 3.0 での主な変更点の 1 つです。

概要

Composition API は主に React Hooks からヒントを得ています。その目的は、低干渉の機能的 API のセットを通じて、コンポーネントのロジックをより柔軟に「組み合わせる」ことを可能にすることです。

<テンプレート>
 <div>{{count}}</div>
 <button @click="addCount">追加</button>
</テンプレート>

<script lang="ts">
'vue' から defineComponent、ref、onMounted をインポートします。

エクスポートデフォルトdefineComponent({
 名前: 'アプリ'、
 設定 () {
  定数カウント = ref(0)
  定数getCount = () => {
   count.value = Math.floor(Math.random() * 10)
  }
  定数addCount = () => {
   カウント値++
  }
  マウント時(() => {
   カウントを取得する()
  })

  戻る {
   カウント、
   追加カウント
  }
 }
});
</スクリプト>

名前が示すように、Composition API は、data や mounted などのパラメータを渡さなくなりました。代わりに、ref や onMounted などのメソッドを導入することで、データの双方向バインディングとライフサイクル関数の実行を実装します。

なぜそれが必要なのでしょうか?

1. コンポーネントが複雑な場合、オプションによって強制的に分離されることなく、ロジックコードを結合できます。これにより、コード品質の上限が上がり、コード品質の下限も下がります。公式サイトの比較表:

2. 再利用を促進。

vue2 では、ロジック コードを再利用したい場合は、mixin を通じて追加できます。しかし、ミックスインの内容は実際には直感的ではなく、同じ名前は上書きされます。コンポジション API では、すべてのメソッドがインポートされるため、単一のロジックをカプセル化できます。たとえば、確認コードを送信するためのカウントダウン機能をカプセル化します。

<テンプレート>
 <input type="number" placeholder="確認コードを入力してください">
 <button v-if="count">{{count}} 秒後に再送信できます</button>
 <button v-else @click="startCount">確認コードを送信</button>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent、ref、reactive} をインポートします。

定数userCountDown = () => {
 定数カウント = ref(0)
 const countDown = (num: 数値) => {
  count.value = 数値
  番号--
  (数値>0)の場合{
   タイムアウトを設定する(() => {
    countDown(数値)
   }, 1000)
  }
 }
 定数開始カウント = () => {
  // 検証コードを取得
  カウントダウン(60)
 }

 戻り値: { count, startCount }
}

エクスポートデフォルトdefineComponent({
 名前: 'ホーム'、
 設定 () {
  const { count, startCount } = userCountDown()
  戻り値: { count, startCount }
 }
});
</スクリプト>

3. TypeScript のサポートが強化されました。 vue プロトタイプに多くのコンテンツを追加するわけではありませんが、これを導入することで型の定義がより明確になります。

設定

セットアップは Vue によって追加された新しいオプションであり、コンポーネントで Composition API を使用するためのエントリ ポイントです。 Vue コンポーネント インスタンスを作成し、props の初期化を完了した後にセットアップが実行されます。オプション API が解析される前に setup が呼び出されるため、setup 内の this は options 内の this とはまったく異なります。混乱を避けるため、セットアップではこれを使用しないでください。同時に、セットアップによって返された値はテンプレートやその他のオプションで使用できます。デザインの観点から見ると、Vue はセットアップですべてを正式に完了します。セットアップの戻り値は、テンプレート テンプレートとメソッドを接続します。

参照、反応的

データが渡されなくなったため、応答性の高い方法でデータを作成およびリッスンするには、Vue によって公開される ref または reactive 関数が必要になります。 2つには違いがあります。ref は基本代入型のデータに使用され、reactive は参照型のデータに使用されます。

基本割り当てタイプの値は、setup メソッドの .value メソッドを使用して取得および変更する必要があります。代入型の値が返されると、データの二重結合が失われるためです。しかし、テンプレートでは直接アクセスが可能です。

<テンプレート>
 <div>{{count}}
  <button @click="changeCount">追加</button>
 </div>
 <div>生徒の名前は: {{student.name} です。}</div>
 <div>生徒の年齢は: {{student.age}} です
  <button @click="changeStudentAge(20)">追加</button>
 </div>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent、ref、reactive} をインポートします。

エクスポートデフォルトdefineComponent({
 名前: 'ホーム'、
 設定 () {
  定数カウント = ref(0)
  定数変更カウント = () => {
   カウント値 = カウント値 + 1
  }
  const 学生 = リアクティブ({
   名前: 'ボブ'、
   年齢: 12
  })
  const changeStudentAge = (年齢: 数値) => {
   学生.年齢 = 年齢
  }
  戻る {
   カウント、
   変更回数、
   学生、
   学生年齢の変更
  }
 }
});
</スクリプト>

計算して見る

<テンプレート>
 <div>{{count}}</div>
 <div>{{doubleCount}}</div>
 <button @click="addCount">追加</button>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent、ref、computed、watchEffect、watch } をインポートします。

エクスポートデフォルトdefineComponent({
 名前: 'アプリ'、
 設定 () {
  定数カウント = ref(0)
  watch(count, () => { // 複数の場合は、[count, count1]を配列として渡す
   console.log('watch', count.value)
  })
  ウォッチエフェクト(() => {
   console.log('watchEffect', count.value)
  })
  定数addCount = () => {
   カウント値++
  }
  const doubleCount = 計算された(() => {
   count.value * 2 を返す
  })
  戻る {
   カウント、
   ダブルカウント、
   追加カウント
  }
 }
});
</スクリプト>

watch と watchEffect の違いは、watchEffect はすぐに実行され、実行中に読み取られた応答データが監視されることです。そして、watch は watch オブジェクトが変更された場合にのみ実行されます。

ライフサイクル

  • beforeCreate -> setup() を使用する
  • 作成された -> setup() を使用する
  • マウント前 -> マウント前
  • マウント済み -> onMounted
  • 更新前 -> 更新前
  • 更新済み -> onUpdated
  • beforeDestroy -> onBeforeUnmount
  • 破棄 -> onUnmounted
  • エラーキャプチャー -> エラーキャプチャー

以上がVue3 Composition APIの使い方紹介の詳しい内容です。Vue3 Composition APIの使い方についてもっと知りたい方は、123WORDPRESS.COMの関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • vue3.0のComposition APIの使い方の1つを詳しく説明します
  • Vue3.0のComposition APIの使用例
  • Vue3 の新機能: Composition API での CSS モジュールの使用
  • Vue3.0 API の新バージョンのコンポジション API の簡単な紹介
  • Vue3 Composition API の抽出と再利用ロジックの詳細な説明
  • Vue3 Composition API が Vue Mixins に取って代わる仕組みについて簡単に説明します。
  • Vue3 コンポジション API でロジックの再利用を実装する方法

<<:  MySQL の 4 つのトランザクション分離レベルの詳細な説明

>>:  Nginx に lua-nginx-module モジュールをインストールする方法

推薦する

Vue+element はローカル検索機能付きのドロップダウン メニューを実装します

必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...

MySQLは変数を使用してさまざまなソートを実装します

コアコード -- 以下では、MySQLでのソート列の実装を示します -- テストデータ CREATE...

MySQL における引用符とバックティックの違いと使い方の詳細な説明

序文そこでこのブログを書きました。このブログでは大物の記事からいくつかの知識も推奨しています。侵害が...

mysql エラー 1045 (28000) - ユーザーへのアクセスが拒否される問題を解決する方法

問題の説明 (以下の説明は Windows 環境に限定されます): D:\develop\ide\m...

vue3+vite プロジェクトで svg を使用する方法の詳細なグラフィック説明

今日、vue3+viteプロジェクトの実践で、svgを使用する場合、以前の記述方法が使用できないこと...

Linux システムで MySQL データベースの解凍バージョンをインストールして構成する方法

1. ファイルを現在のディレクトリに解凍しますコマンド: tar -zxvf mysql....ta...

Centos7 に yum を使用して MySQL をインストールし、リモート接続を実現する方法

Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...

MySQLからデータをインポートする際の不正なフォーマット、インポートの遅延、データ損失などの問題を迅速に解決します。

遅い問題を完全に解決したい場合は、MySQL を MySQL 8.0 にアップグレードすることをお勧...

Vue-routerルーティングの使い方

目次1. 説明2. インストール3. テスト1. 説明Vue Router は、Vue.js の公式...

MySQL 8.0.11 MSI バージョンのインストールと構成のグラフィック チュートリアル

この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...

Linux 面接で最もよく聞かれる 10 の質問のまとめ

序文Linux システムの運用および保守エンジニア職の面接を受ける場合は、次の 10 個の最も一般的...

MySQL ファジークエリステートメントコレクション

SQL ファジークエリステートメント一般的なファジーステートメントの構文は次のとおりです。 SELE...

Alibaba Cloud で静的ウェブサイトを素早く構築する方法

序文:ジュニアプログラマーとして、私は自分自身の個人ウェブサイトを構築し、それを他の人に見せることを...

Angularルーティングサブルートの詳細な説明

目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...

イメージの起動時にdocker runまたはdocker restartが自動的に終了する問題を解決します

コマンドを実行します: docker run --name centos8 -d centos /b...