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 トリガーの定義と使用方法の簡単な例

この記事では、MySQL トリガーの定義と使用方法について説明します。ご参考までに、詳細は以下の通り...

Vueはドラッグプログレスバーを実装します

この記事では、ドラッグプログレスバーを実現するためのVueの具体的なコードを例として紹介します。具体...

Vue Elementのテーブルコンポーネントをカプセル化する方法

Vue コンポーネントをカプセル化する場合でも、機能コンポーネントをクロスファンクショナルに使用しま...

MySQL スケジュールバックアップタスクの簡単な分析

導入実稼働環境では、データの損失を回避するために、通常、データベースは定期的にバックアップされます。...

MySQL 5.7.20 の解凍バージョンをインストールするための詳細な手順 (2 つの方法)

Windows 64ビットでのMySQLのインストールについて説明します。5.7以降、MySQLの...

MySQLデータベースでゼロ値を含む日付の問題について簡単に説明します

デフォルトでは、MySQL は日付に 0 値を挿入することを受け入れますが、実際には日付の 0 値に...

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...

Win10システムにMySQL 8.0をインストールするときに発生する問題を解決する

Win10 システムに MySQL 8.0 をインストールする際に発生する問題と解決策は次のとおりで...

Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明

nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー、メール プ...

MySQL 8.0.22 zip圧縮パッケージ版(無料インストール)のダウンロード、インストール、および構成手順の詳細

目次最初のステップはMySQLをダウンロードすることですステップ2: ダウンロードした圧縮パッケージ...

Centos 6.5 での mysql-community-server. 5.7.18-1.el6 のインストール

次のコマンドを使用して、MySQL Serverがインストールされているかどうかを確認します。 [r...

スクラッチ宝くじの例を実現する JavaScript キャンバス

この記事では、スクラッチ効果を実現するためのJavaScriptキャンバスの具体的なコードを参考まで...

CentOS 7.4 に MySQL 5.7 を手動でインストールする方法

MySQL データベースは、特に JAVA プログラマーの間で広く使用されています。クラウド データ...

Vueでのバスの使用に関する詳細な説明

Vue バス メカニズム (バス) vuex を使用するだけでなく、vue 内の親子以外のコンポーネ...

Tomcat CentOS インストールプロセス図

Tomcat CentOS インストールこのインストール チュートリアルでは、次の内容について説明し...