機能コンポーネント単一ファイルコンポーネント(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デーモンの起動に失敗したエラーの解決方法数日前、公開されたウェブサイトはこれらのアクティビ...
Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...
目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...
1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...
SQL実行ステップの詳細な分析まず、ステートメントが実行される順序を見てみましょう。 (8)選択する...
MySQLサービス8.0.14のインストール(一般)の参考までに、具体的な内容は次のとおりです。イ...
以前にインストールされたバージョンのデータベースをアンインストールする方法については、この記事を参照...
Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...
この記事は主に、nginx に基づいてブラウザネゴシエーションキャッシュを設定する詳細なプロセスを紹...
MySQL データベースでは、null は一般的な状況です。MySQL での null に関する注意...
まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...
この記事では、参考までに簡単なタイマーを実装するためのJavaScriptの具体的なコードを紹介しま...
序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...
<html> <ヘッド> <meta http-equiv="...