レンダリングAPIの変更この変更は<template>ユーザーに影響しません
レンダリング関数のパラメータ// 2.0 レンダリング関数 export default { レンダリング(h) { h('div') を返す } } // 3.x 構文 export default { 与える() { h('div') を返す } } レンダリング関数のシグネチャの変更// 2.x エクスポートデフォルト{ レンダリング(h) { h('div') を返す } } // 3.x 'vue' から { h, reactive } をインポートします エクスポートデフォルト{ セットアップ(prop, {スロット, 属性, 出力}) { 定数状態 = リアクティブ({ カウント: 0 }) 関数の増分() { 状態.count++ } // レンダリング関数に戻る return () => h( 'div', { onClick: 増加 }, 状態数 ) } } VNode プロパティのフォーマット// 2.x { クラス: ['button', 'is-outlined'], スタイル: {色: '#fffff'}, 属性: {id: '送信'}, domProps: {innerHTML: ''}, オン: {クリック: 送信フォーム}, キー: '送信ボタン' } // 3.x VNode構造はフラットです{ クラス: ['button', 'is-outlined'], スタイル: { 色: '#34495E' }, id: '送信', 内部HTML: ''、 onClick: 送信フォーム、 キー: '送信ボタン' } スロット統合通常のスロットとスコープ付きスロットを変更しました
// 2.x h(レイアウトコンポーネント、[ h('div', {スロット: 'header'}, this.header), h('div', {スロット: 'header'}, this.header) ]) // スコープスロット: // 3.x h(レイアウトコンポーネント、{}、{ ヘッダー: () => h('div', this.header), コンテンツ: () => h('div', this.content) }) // プログラム的にスコープ付きスロットを導入する必要がある場合、それらは $slots オプションに統合されるようになりました // 2.x スコープ付きスロット this.$scopedSlots.header // 3.x ではこれを書きます。$slots.header $listeners を削除する
Vue2 では、this.attrs と this.attrs および this.listeners を使用して、それぞれコンポーネントに渡される属性とイベント リスナーにアクセスできます。inheritAttrs: false と組み合わせることで、開発者はこれらの属性とリスナーをルート要素ではなく他の要素に適用できます。 <テンプレート> <ラベル> <input type="text" v-bind="$attrs" v-on="$listeners"> </ラベル> </テンプレート> <スクリプト> エクスポートデフォルト{ 継承属性: false } </スクリプト> Vue の仮想 DOM では、イベント リスナーは on というプレフィックスが付いた属性になり、attrs オブジェクトの一部になったため、リスナーは削除されます。 <テンプレート> <ラベル> <input type="text" v-bind="$attrs" /> </ラベル> </テンプレート> <スクリプト> エクスポートデフォルト{ 継承属性: false } // このコンポーネントが id 属性と v-on:close リスナーを受け取った場合、$attrs オブジェクトは次のようになります { id: 'my-input', onClose: () => console.log('close イベントがトリガーされました') } </スクリプト> $attrs にクラスとスタイルが含まれるようになりましたこれで$attrにはクラスやスタイルを含むすべての属性が含まれるようになりました 2.xでは、仮想DOMはクラスとスタイルを特別に処理するため、それらは$attrに含まれず、inheritAttr: falseを使用すると副作用が発生します。
<テンプレート> <ラベル> <input type="text" v-bind="$attrs" /> </ラベル> </テンプレート> <スクリプト> エクスポートデフォルト{ 継承属性: false } </スクリプト> <!-- 書き込み --> <my-component id="my-id" class="my-class"></my-component> <!-- vue2 は以下を生成します --> <label class="私のクラス"> <input type="text" id="私のID" /> </ラベル> <!-- vue3 は以下を生成します --> <ラベル> <input type="text" id="私のID" class="私のクラス" /> </ラベル> 以上がvue3におけるレンダリング機能の非互換な変更についての詳しい説明です。vueレンダリング機能の非互換な変更についての詳細は、123WORDPRESS.COM内の他の関連記事にも注目してください! 以下もご興味があるかもしれません:
|
<<: MySQL 5.7.18 の解凍バージョンをダウンロードしてインストールし、MySQL サービスを開始するための詳細なグラフィック手順
>>: Linux でコマンドまたはプロセスの実行時間を調べる方法
文法:背景画像: 円錐グラデーション(位置の角度から、開始色、...、最後の色)最初のパラメータ:開...
1. ITミルツールキットIT Mill Toolkit は、リッチ Web アプリケーション用のウ...
目次1. マスタースレーブレプリケーションマスタースレーブレプリケーション3スレッドマスタースレーブ...
まず、Docker イメージ用の特定のプロジェクト ディレクトリを作成します。例: mkdir /h...
CSSフィルターを使用してマウスオーバー効果を記述する <div class="fi...
目次序文1. 楽観的ロックバージョンフィールドを追加する2. 悲観的ロック読み取りロック完全なテーブ...
購入証明書Alibaba CloudのCloud Shield証明書サービスから購入できます。証明書...
オーバーフロー非表示指定された高さを超えるテキストや画像情報を非表示にすることを意味します。 <...
この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...
MySQL でサポートされている浮動小数点型は、 FLOAT 、 DOUBLE 、およびDECIMA...
序文この記事では、MySQL 5.7 グリーン バージョンのインストール チュートリアルを紹介します...
1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...
目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...
目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...
序文以前、defineProperty を紹介したとき、オブジェクトの変更のみを監視でき、配列の変更...