機能コンポーネント単一ファイルコンポーネント(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 分散ストレージ例の詳細な説明
デモコマンドをカスタマイズするVue カスタム ディレクティブの構文は次のとおりです。 Vue.di...
序文デフォルトでは、MySQL はデータベース クエリ データをキャッシュするために大きなメモリ ブ...
1. Apache Tomcat 公式サイトから Tomcat 圧縮パッケージをダウンロードします。...
目次背景分析する方法背景MySQL は 26 日の 16:23:49 に大量のスロー クエリを生成し...
ライフサイクル分類vue の各コンポーネントは独立しており、各コンポーネントには独自のライフサイクル...
序文MySQL 8.0 より前は、Oracle、SQL SERVER、PostgreSQL などの他...
Windows 10 1903 は、2019 年に Microsoft がリリースした Windo...
最近、次のような効果を達成する必要がある最初は、CSS3D回転を使用して記述すると、次の効果しか得ら...
知識ポイント1: ヘッダー情報にWebページのベースURLを設定するベース URL の本質は、ハイパ...
1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...
1. 遷移属性の理解1. transition 属性は、次の 4 つの遷移プロパティを設定するために...
Vue データの双方向バインディング原則ですが、この方法には欠点があり、配列とオブジェクトの部分的な...
具体的な方法: 1. [ win+r ] を押して実行ウィンドウを開き、「regedit」と入力して...
1. 前提条件何度かインストールしているので、エラーについてはこれ以上説明しません。ちょっとわかりに...
序文これまでは、/bin/ ディレクトリのソフトリンクを変更して Python のバージョンを切り替...