機能コンポーネント単一ファイルコンポーネント(SFC)<template>の機能属性が削除されました // 適切な見出し (つまり、h1、h2、h3 など) を提供する <dynamic-heading> コンポーネントを使用します。2.x では、これはおそらく単一のファイル コンポーネントとして記述されます。 // Vue 2 関数コンポーネントの例 export default { 機能的: 真、 プロパティ: ['レベル'], レンダリング(h, { props, data, children }) { h(`h${props.level}`, データ, 子) を返します } } // <template> を使用した Vue 2 関数コンポーネントの例 <テンプレート機能> <コンポーネント :is="`h${props.level}`" v-bind="属性" v-on="リスナー" /> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: ['レベル'] } </スクリプト> Vue 3 では、すべての関数コンポーネントは通常の関数を使用して作成されるため、{ functional: true } コンポーネント オプションを定義する必要はありません。 //vue3.0 'vue' から { h } をインポートします const DynamicHeading = (props, context) => { h(`h${props.level}`, context.attrs, context.slots) を返します } DynamicHeading.props = ['レベル'] デフォルトのDynamicHeadingをエクスポートする // Vue3.0 単一ファイル書き込み <template> <コンポーネント v-bind:is="`h${$props.level}`" v-bind="$attrs" /> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: ['レベル'] } </スクリプト> 主な違いは <template> 内のリスナーを削除する機能属性が $attrs の一部として渡され、削除できるようになりました。 非同期コンポーネントの書き方とdefineAsyncComponentメソッド非同期コンポーネントを明示的に定義するには、defineAsyncComponentヘルパーメソッドを使用します。 // vue2.x // 以前は、非同期コンポーネントは、Promise を返す関数としてコンポーネントを定義することによって作成されていました。const asyncPage = () => import('./NextPage.vue') // またはオプションとして作成します const asyncPage = { コンポーネント: () => import('./NextPage.vue'), 遅延: 200、 タイムアウト: 3000、 エラー: ErrorComponent、 読み込み中: LoadingComponent } // vue3.x vue3.xでは、defineAsyncComponentを使用してimport{defineAsyncComponent} from 'vue'を定義する必要があります。 './components/ErrorComponent.vue' から ErrorComponent をインポートします。 './components/LoadingComponent.vue' から LoadingComponent をインポートします。 // オプションなしの定義メソッド const asyncPage = defineAsyncComponent(() => import('./NextPage.vue')) // オプション付き非同期コンポーネント constasyncPageWithOptions = defineAsyncCopmonent({ ローダー: () => import('./NextPage.vue'), 遅延: 200、 タイムアウト: 3000、 エラーコンポーネント: エラーコンポーネント、 ロードコンポーネント: ロードコンポーネント }) ローダー関数は、resolve および deny パラメータを受け入れなくなり、常に Promise を返す必要があります。 // vue2.x const oldAsyncComponent = (解決、拒否) => {} // vue3.x const asyncComponent = defineAsyncComponent(() => 新しい Promise((resolve, deny) => {})) コンポーネントイベントはemitsオプションで宣言する必要があるVue3 では、props オプションに似た、emits オプションが提供されるようになりました。このオプションを使用すると、コンポーネントが親オブジェクトに発行するイベントを定義できます。 <!-- vue2.x --> <テンプレート> <div> <p>{{ テキスト }}</p> <button v-on:click="$emit('accepted')">OK</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ プロパティ: ['テキスト'] } </スクリプト> <!-- vue3.x --> <!-- props と同様に、emits を使用してコンポーネントによって発行されるイベントを定義できるようになりました --> <!-- このオプションは、props などの渡されたパラメータを検証するために使用される特定のオブジェクトも受け取ります--> <!-- 各コンポーネントからのすべての発行を記録することを強くお勧めします。.native 修飾子がない場合、宣言されていないイベントのすべてのリスナーがコンポーネントの $attr に含まれ、デフォルトではコンポーネントのルート ノードにバインドされるためです --> <テンプレート> <div> <p>{{ テキスト }}</p> <button v-on:click="$emit('accepted')">OK</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ プロパティ: ['テキスト'], 発行: ['accepted'] } </スクリプト> 以上がvue3のコンポーネントの非互換な変更についての詳しい説明です。vue3のコンポーネントの非互換な変更についての詳細は、123WORDPRESS.COMの他の関連記事もご覧ください! 以下もご興味があるかもしれません:
|
<<: MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明
>>: Nginx 逆生成 Mogilefs 分散ストレージ例の詳細な説明
序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部...
MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...
目次背景メタバースとは何ですか?成果を達成するトライアル 1: THREE.TorusGeometr...
目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...
エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...
この記事では、例を使用して、MySQL データベースの最適化のためのテーブルおよびデータベース シャ...
メモリストレージエンジンに関する知識ポイントメモリ ストレージ エンジンは日常業務ではほとんど使用さ...
目次1. MySQLイメージを取得する2. ダウンロードが完了したか確認する3. MySQLはローカ...
HTML では、<img> タグはテキスト内の画像タグを定義するために使用されます。その...
1. ワイヤレス ネットワーク カードを挿入し、コマンドiwconfigを使用してワイヤレス ネット...
この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...
この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...
Web デザイナーとして豊富な CSS 経験を持つ私たちは、あらゆる種類のコード構文、互換性、スニペ...
jQuery を使用してフェードインとフェードアウト効果を完成させる前に、まずいくつかのコードを理解...