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 マスタースレーブレプリケーションの実装原理と構成

推薦する

$remote_addr に基づく nginx フロントエンド配布方法の詳細な説明

要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...

CSS クリアフロートクリア:both サンプルコード

今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...

Linux における $ 記号の基本的な使い方のまとめ

Linuxバージョン: CentOS 7 [root@azfdbdfsdf230lqdg1ba91 ...

CentOS7仮想マシンで固定IPアドレスを設定する方法

私の開発環境は、VMWare 仮想マシンに CentOS をインストールし、ホスト ファイルにインタ...

Node.js とブラウザのグローバル オブジェクトの違いの概要

Node.js では、.js ファイルは完全なスコープ (モジュール) です。したがって、var に...

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

Vueはテーマ切り替えのための複数のアイデアを実装します

目次テーマを動的に変更する最初の方法: 動的コンポーネント2番目の方法はルーティング分離です要約する...

MySQL 5.7.33 インストール プロセスの詳細な図解

目次インストールパッケージのダウンロードインストール環境変数の設定インストールが成功したか確認する記...

Centos7 で Java8 と MySQL をインストールしてデプロイする

通常、Java の学習とプロジェクトのデプロイはローカルで行われますが、実稼働環境は Linux 環...

Linux で MySQL のスケジュールバックアップを実装する方法

実際のプロジェクトでは、緊急事態を防ぐためにデータベースを頻繁にバックアップする必要があります。しば...

MySQL 8.0.11 Mac 用インストール ガイド

MACはmysql8.0をインストールします。具体的な内容は次のとおりです。 1. ダウンロードアド...

入力のid属性とname属性の違いの例

長い間ウェブサイトを作ってきましたが、入力時のnameとidの違いがまだわかりません。最近jQuer...

モバイル アプリのユーザー インターフェース設計に関する 10 のヒント

ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...

Dockerコンテナ監視の原理とcAdvisorのインストールおよび使用方法

本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...