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 は、あるテーブルのデータに基づいて別のテーブルの特定のフィールドを更新します (SQL ステートメント)

次のコードは、MySQL が 1 つのテーブルのデータに基づいて別のテーブルのいくつかのフィールドを...

MySQLクエリが遅い場合の理由と解決策

Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...

innerHTML を理解する

<br />関連記事: innerHTML HTML DOM insertRow() メ...

JavaScriptを使って動的にテーブルを生成するケースの詳しい説明

目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...

すべてのブラウザに対応したデータURIとMHTMLの完全なソリューション

データURI Data URI は、小さなファイルをドキュメントに直接埋め込むために RFC 239...

ブラウザの互換モードでボタン内のテキストが垂直方向に中央揃えにならない問題について簡単に説明します。

XML/HTML コードコンテンツをクリップボードにコピー<ボタンスタイル= "カ...

CSS @font-face パフォーマンス最適化の詳細な理解

この記事では主に、フォント読み込みの最適化に関する一般的な戦略を紹介します。内容の大部分は参考資料と...

MySQLの日次統計レポートでは、その日にデータがない場合には0が入力されます。

1. 問題の再現:各日の合計数を日ごとにカウントします。データのない日がある場合、グループ化によっ...

MySQL 8.0.12 のインストールと設定のチュートリアル

この記事はMySQL 8.0.12のインストールと設定に関する詳細なチュートリアルを記録しています。...

Linux sshのデフォルトのリモートポート番号を変更する6つの手順

Linux のデフォルトの ssh リモート ポートは 22 です。デフォルトのポートは、悪意のある...

Dockerイメージをプライベートリポジトリにアップロードする方法の例

イメージは、GitHub と同様に Docker パブリック リポジトリに直接簡単にプッシュできます...

フォームの読み取り専用属性と無効な属性についての簡単な説明

フォーム内の読み取り専用および無効な属性1. 読み取り専用:サーバーは、ユーザーがデータを変更するこ...

Ubuntu 20.04 に MySql5.7 をインストールして構成するための詳細なチュートリアル

目次1. Ubuntuソースの変更2. MySQLをインストールする3. 新しいユーザーを作成し、権...

HTML ハイパーリンク タグ_Powernode Java アカデミー

HTML を学習したり使用したりしたことがある人なら、<a> タグについてよく知っている...

Firefox または IE でスパン幅が決定されない場合の解決策

コードをコピーコードは次のとおりです。 <html xmlns="http://ww...