vue3.0 sfcのセットアップの変更について簡単に説明します。

vue3.0 sfcのセットアップの変更について簡単に説明します。

序文

Vue では、sfc (単一ファイル コンポーネント) は、ファイル サフィックスが .vue である特殊なファイル形式を指します。これにより、Vue コンポーネント内のテンプレート、ロジック、およびスタイルを 1 つのファイルにカプセル化できます。

以下は基本的なSFCです

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      挨拶: 'Hello World!'
    }
  }
}
</スクリプト>

<テンプレート>
  <p class="greeting">{{ 挨拶 }}</p>
</テンプレート>

<スタイル>
.挨拶{
  色: 赤;
  フォントの太さ: 太字;
}
</スタイル>

Vue3.0では最新のsfc提案でセットアップ記述方式が導入されました。新しい提案の変更点を見てみましょう。

標準的なSFCの書き方

TS を使用する場合、標準の sfc は型推論を実行するために defineComponent を使用する必要があります。

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

    エクスポートデフォルトdefineComponent({
    設定() {
      戻る {
        // テンプレートに公開されるプロパティ }
    }
  })
</スクリプト>

スクリプト設定

起動スクリプト設定の目的は、開発者がコンポーネントをより効率的に開発し、定型的なコンテンツを減らし、開発の負担を軽減できるようにすることです。スクリプト タグにセットアップ属性を追加するだけで、スクリプトがセットアップ関数になります。同時に、定義された変数、関数、およびインポートされたコンポーネントがデフォルトでテンプレートに公開されます。

可変露出

標準的な書き方

<スクリプト>
'vue' から {defineComponent, ref} をインポートします。

エクスポートデフォルトdefineComponent({
  設定() {
    定数カウント = ref(0)
    戻る {
      カウント
    }
  }
})
</スクリプト>

<テンプレート>
  <div>
    親{{count}}
  </div>
</テンプレート>

設定

<スクリプト設定 lang="ts">
'vue' から {ref} をインポートします

  定数カウント = ref(0)
</スクリプト>

<テンプレート>
  <div>
    親{{count}}
  </div>
</テンプレート>

部品の取り付け

標準的な書き方

<script lang="ts">
'vue' から {defineComponent} をインポートします。
'./childComponent' から子コンポーネントをインポートします。

エクスポートデフォルトdefineComponent({
  コンポーネント:
    子供
  },
  設定() {
    // ...
  }
})
</スクリプト>

<テンプレート>
  <div>
    親
    <子供 />
  </div>
</テンプレート>

設定

<スクリプト設定 lang="ts">
'./childComponent' から子コンポーネントをインポートします。
</スクリプト>

<テンプレート>
  <div>
    親
    <子供 />
  </div>
</テンプレート>

コンポーネントを手動でマウントする必要はなく、テンプレートで使用できるため、効率的かつ高速です。 その他の変数や、compute や watch などのトップレベル API は、元の標準と同じように記述されます。

小道具

セットアップでは、props を受け取るときに、サブコンポーネントは、セットアップ構文でのみ使用できる API である defineProps を使用する必要があります。まずは標準的な書き方と小道具の受け取り方を見てみましょう。

標準的な書き方

// 親.vue
<テンプレート>
  <子:count={count} />
</テンプレート>
<script lang="ts">
'vue' から {defineComponent,ref} をインポートします。
'./childComponent' から子コンポーネントをインポートします。

エクスポートデフォルトdefineComponent({
  コンポーネント:
    子供
  },
  設定() {
    定数カウント = ref(0)
    戻る {
      カウント
    }
  }
})
</スクリプト>
// 子.vue
<テンプレート>
  子{{count}}
</テンプレート>
<script lang="ts">
'vue' から {defineComponent} をインポートします。
エクスポートデフォルトdefineComponent({
  プロパティ: ['count'],
  セットアップ(プロパティ) {
    戻る {}
  }
})
</スクリプト>

defineProps を使用したセットアップの記述

// 親.vue
<テンプレート>
  <子:count={count} />
</テンプレート>
<スクリプト設定 lang="ts">
'vue' から {ref} をインポートします
'./childComponent' から子コンポーネントをインポートします。

  const count = ref<数値>(0)
</スクリプト>
// 子.vue
<テンプレート>
  子{{count}}
</テンプレート>
<スクリプトの設定>
プロパティを定義します(['count'])
</スクリプト>


注: sfc-setup構文を使用する場合、definePropsを導入する必要はありません。

ここでは、単に props を宣言するだけでよく、記述がはるかに簡単になります。


では、プロパティのタイプチェックはどのように行うのでしょうか?

<スクリプトの設定>
定義プロパティ({
  count: 数、
  タイトル:
    タイプ: 文字列、
    デフォルト: 'ヘッダー'
  },
  データ: {
    タイプ: オブジェクト、
    デフォルト() {
      戻る {}
    }
  }
})
</スクリプト>


型注釈に TS を使用するにはどうすればよいでしょうか?

<script lang="ts" セットアップ>
インターフェースd{
  名前: 文字列
  }

  定義プロパティ<{
  count: number // 数値はts構文で置き換える必要があります title: string
  データ:d
}>()
</スクリプト>


propsにはデフォルト値が与えられていないことがわかりました。TSの記述では、propsのデフォルト値を設定する方法が2つあります。

ES6 変数分割代入

defineProps はオブジェクトを返しますが、返されたオブジェクトを分解して、同時にデフォルト値を割り当てることができます。

<script lang="ts" セットアップ>
インターフェースd{
  名前: 文字列
  }

  const {count = 0, title = 'header', date = { name: 'a' }} = defineProps<{
  count: number // 数値はts構文で置き換える必要があります title: string
  データ:d
}>()
</スクリプト>

デフォルトあり


その後、公式はプロパティのデフォルト値を提供するために withDefaults をリリースしました。withDefaults はデフォルト値の型チェックを実行します。

<script lang="ts">
// withDefaultsをインポートすることを忘れないでください
'vue' から { withDefaults } をインポートします

  インターフェースd{
  名前: 文字列
  }

  const props = withDefaults(defineProps<{
  count: number // 数値はts構文で置き換える必要があります title: string
  データ:d
}>(), {
  カウント: 0,
  タイトル: 'ヘッダー',
  データ: () => ({name: '王小二'})
})
</スクリプト>

カスタムイベント

セットアップでイベントを使用するには、defineEmits を使用する必要があります。これも、sfc-setup 構文でのみ使用できるコンパイラ マクロです。

<スクリプト設定 lang="ts">
  // イベントを定義し、型に注釈を付ける // TS 以外の記述: const emittings = defineEmits(['create'])
  const 出力 = defineEmits<{
    (e: 'create'、値: 文字列): void
  }>()

    // トリガーイベント const addTodo = () => {
    出力('create', 'hi')
 }
</スクリプト>

Vue3 + ts でリファクタリングされた公式の TodoMVC の例を追加します: codesandbox.io/s/vibrant-w…

要約する

vue3.0 sfc のセットアップの変更に関するこの記事はこれで終わりです。vue3.0 sfc のセットアップの変更に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue3で注意すべき2つのポイントを詳しく解説:セットアップ
  • Vue3+スクリプト設定+ts+Vite+Volarプロジェクト
  • Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明
  • vue3 の setUp とリアクティブ関数の使用方法の詳細な説明
  • vue3.0 でのセットアップの使用 (2 つの使用方法)
  • Vue3 setup() の高度な使用例の詳細な説明

<<:  Linux で測位バックグラウンド サービスが時々クラッシュする問題の解決方法

>>:  MySql マスタースレーブレプリケーションの実装原理と構成

推薦する

MySQL ページング制限の実用的な最適化

序文クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要があり...

Vueウォッチの監視方法の概要

目次1. Vueにおけるwatchの役割はその名の通り、監視の役割です。 2. このオブジェクトのプ...

MySQL での find_in_set() 関数の使用に関する詳細な説明

まず、例を見てみましょう。記事テーブルにはタイプフィールドがあり、1 見出し、2 おすすめ、3 ホッ...

nginx をプロキシ キャッシュとして使用する方法

キャッシュを使用する目的は、バックエンドの負荷を軽減し、Web サイトの同時実行性を向上させることで...

Spring環境を構成するためのDocker-composeの手順

最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された...

iframe の多層ネスト、無制限のネスト、高度に適応したソリューション

ページ A、B、C の 3 つがあります。ページ A にはページ B が含まれ、ページ B にはペー...

一般的な Linux ディストリビューションのミラーソース構成の概要

最近 Linux を研究していて、いくつかの Linux ディストリビューションを試してみましたが、...

JDBC および MySQL 一時テーブルスペースの詳細な分析

背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...

Vue3における非親子コンポーネント通信の詳細な説明

目次最初の方法アプリ.vueホーム.vueホームコンテンツ.vueデータの応答性レスポンシブプロパテ...

CSS スタイルで一般的なグラフィック効果を示すサンプルコード

一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...

WeChatミニプログラムでの仮想リストの実装例

目次序文分析する初期レンダリング方法初期最適化さらなる最適化方法2序文ほとんどのミニプログラムには、...

Hタグはウェブページ制作において適切に使用すべきである

HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...

Centos7 での MySQL のインストールに関するチュートリアル

最近、自宅サーバーにクラウドディスクを導入する予定なので、一連の環境構築作業を始めました。MySQL...

フレームセットの共通プロパティ(フレームとウィンドウの分割)

フレームとは、Web ページ画面を複数のフレームに分割したもの(複数の Web ページという形で表示...

MySQL ストアド プロシージャの作成、呼び出し、管理の詳細な説明

目次ストアドプロシージャの概要ストアド プロシージャを使用する理由は何ですか?ストアドプロシージャの...