序文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']) </スクリプト>
ここでは、単に props を宣言するだけでよく、記述がはるかに簡単になります。
<スクリプトの設定> 定義プロパティ({ count: 数、 タイトル: タイプ: 文字列、 デフォルト: 'ヘッダー' }, データ: { タイプ: オブジェクト、 デフォルト() { 戻る {} } } }) </スクリプト>
<script lang="ts" セットアップ> インターフェースd{ 名前: 文字列 } 定義プロパティ<{ count: number // 数値はts構文で置き換える必要があります title: string データ:d }>() </スクリプト>
ES6 変数分割代入 defineProps はオブジェクトを返しますが、返されたオブジェクトを分解して、同時にデフォルト値を割り当てることができます。 <script lang="ts" セットアップ> インターフェースd{ 名前: 文字列 } const {count = 0, title = 'header', date = { name: 'a' }} = defineProps<{ count: number // 数値はts構文で置き換える必要があります title: string データ:d }>() </スクリプト> デフォルトあり
<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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux で測位バックグラウンド サービスが時々クラッシュする問題の解決方法
>>: MySql マスタースレーブレプリケーションの実装原理と構成
序文クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要があり...
目次1. Vueにおけるwatchの役割はその名の通り、監視の役割です。 2. このオブジェクトのプ...
まず、例を見てみましょう。記事テーブルにはタイプフィールドがあり、1 見出し、2 おすすめ、3 ホッ...
キャッシュを使用する目的は、バックエンドの負荷を軽減し、Web サイトの同時実行性を向上させることで...
最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された...
ページ A、B、C の 3 つがあります。ページ A にはページ B が含まれ、ページ B にはペー...
最近 Linux を研究していて、いくつかの Linux ディストリビューションを試してみましたが、...
背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...
目次最初の方法アプリ.vueホーム.vueホームコンテンツ.vueデータの応答性レスポンシブプロパテ...
一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...
目次序文分析する初期レンダリング方法初期最適化さらなる最適化方法2序文ほとんどのミニプログラムには、...
HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...
最近、自宅サーバーにクラウドディスクを導入する予定なので、一連の環境構築作業を始めました。MySQL...
フレームとは、Web ページ画面を複数のフレームに分割したもの(複数の Web ページという形で表示...
目次ストアドプロシージャの概要ストアド プロシージャを使用する理由は何ですか?ストアドプロシージャの...