序文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 マスタースレーブレプリケーションの実装原理と構成
要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...
今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...
Linuxバージョン: CentOS 7 [root@azfdbdfsdf230lqdg1ba91 ...
私の開発環境は、VMWare 仮想マシンに CentOS をインストールし、ホスト ファイルにインタ...
Node.js では、.js ファイルは完全なスコープ (モジュール) です。したがって、var に...
メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...
目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...
目次テーマを動的に変更する最初の方法: 動的コンポーネント2番目の方法はルーティング分離です要約する...
目次インストールパッケージのダウンロードインストール環境変数の設定インストールが成功したか確認する記...
通常、Java の学習とプロジェクトのデプロイはローカルで行われますが、実稼働環境は Linux 環...
実際のプロジェクトでは、緊急事態を防ぐためにデータベースを頻繁にバックアップする必要があります。しば...
MACはmysql8.0をインストールします。具体的な内容は次のとおりです。 1. ダウンロードアド...
長い間ウェブサイトを作ってきましたが、入力時のnameとidの違いがまだわかりません。最近jQuer...
ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...
本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...