Vueにおける混合継承の詳細な説明

Vueにおける混合継承の詳細な説明

混合継承の影響:

Aにはデータ属性とsayメソッドがある

Bにはseeメソッドとname属性がある

AがBを継承すると、Aは自身のデータ属性とsayメソッドに加えて、Bのseeメソッドとname属性も持つようになる。

C に AB を混合すると、C には独自の要素と、A のデータ属性と say メソッド、および B の see メソッドと name 属性が含まれるようになります。

1. 継承

Vue.extend メソッド

Vue.extend( Vue ComponentOptions ) は、基本 Vue コンストラクターを使用して「サブクラス」を作成するグローバル メソッドです。引数は、コンポーネント オプション (Vue ComponentOptions) を含むオブジェクトです。​

データ属性は特別なケースであり、注意が必要です。Vue.extend() の関数(ファクトリ関数)である必要があります。

// コンストラクタを作成する ja
var プロファイル = Vue.extend({
  テンプレート: '<p>{{firstName}} {{lastName}} 別名 {{alias}}</p>',
  データ: 関数 () {
    戻る {
      ファーストネーム: 'ウォルター',
      姓: 'ホワイト',
      別名:「ハイゼンベルク」
    }
  }
})
// Profile クラスのインスタンスを作成し、要素に添付します。
新しいプロファイル().$mount('#mount-point')

​プロパティを拡張する

extends を使用すると、Vue.extend を使用せずに別のコンポーネントの拡張機能 (単純なオプション オブジェクトまたはコンストラクター) を宣言できます。これは主に、単一ファイル コンポーネントの拡張を容易にするためです。タイプはオブジェクトまたは関数です

pageTwo.vue ファイル

<テンプレート>
    <div>
        <h3>2 ページ目</h3>
        <ページング :total="合計" :pageSize="ページサイズ" :sizeOptions="サイズオプション"/>
    </div>
</テンプレート>
<スクリプト>
    '../component/PagingData.vue' から PagingData をインポートします。
    エクスポートデフォルト{
        // 継承を実装する extends: PagingData
    }
</スクリプト>

注: 上記のファイルの paging は、グローバルに登録されたカスタム コンポーネントです。Pag​​ingData もコンポーネントですが、登録されていません。代わりに、そのコンテンツは継承を通じて pageTwo にマージされます。

2. ミックスイン

ミックスイン オブジェクトには任意のコンポーネント オプションを含めることができます。コンポーネントがミックスインを使用する場合、ミックスインのすべてのオプションがコンポーネント自体のオプションに「混合」されます。

マージルール

コンポーネントとミックスインに同じ名前のオプションがある場合、それらのオプションは適切な方法で「マージ」されます。

1. データ オブジェクトは内部で再帰的にマージされ、競合が発生した場合はコンポーネント データが優先されます。

2. 同じ名前のフック関数(ライフサイクル関数)は配列にマージされ、すべて呼び出されます。さらに、ミックスインのフックはコンポーネント自体のフックの前に呼び出されます。

3. メソッド、コンポーネント、ディレクティブなど、値がオブジェクトであるオプションは、同じオブジェクトにマージされます。 2 つのオブジェクトのキー名が競合する場合は、コンポーネント オブジェクトのキーと値のペアが取得されます。

継承(拡張)もこのマージのルールです。

ミックスインを使用して多重継承を実装できます。ミックスインは継承の実装には使用されません。複数の Vue ComponentOptions (Vue オプション コンポーネント オブジェクト) を結合します。

形式: ミックスイン: [コンポーネント 1 をマージ、コンポーネント 2 をマージ、…]

pageOne.vue ファイル

<テンプレート>
    <div>
        <h3>1ページ目</h3>
        <hr/>
        <ページング @pageChangeEvt="cb" :total="合計" :pageSize="ページサイズ" :sizeOptions="sizeOptions"/>
    </div>
</テンプレート>
<スクリプト>
    '../component/PagingData.vue' から PagingData をインポートします。
    '../component/PagingFunc' から PagingFunc をインポートします。
    エクスポートデフォルト{
        // 拡張: {PagingFunc、PagingData}、
        // 拡張: [PagingFunc、PagingData]、
        ミックスイン: [PagingFunc、PagingData]、
    }
</スクリプト>

注: 上記のファイルの paging は、グローバルに登録されたカスタム コンポーネントです。Pag​​ingData と PagingFunc もコンポーネントですが、登録されていません。代わりに、それらのコンテンツはミキシングによって pageOne にマージされます。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue2.0コンポーネントの継承と拡張の詳細な説明
  • Web プロジェクト開発 VUE の混合と継承の原則
  • Vueのミックスインと継承について詳しく説明します

<<:  Webデザインチュートリアル(2):模倣と盗作について

>>:  10 HTML テーブル関連タグ

推薦する

Vue で ToDo アプリケーションを実装する例

背景まず最初に、私はフロントエンド開発の専門家ではないことを述べておきたいと思います。私の以前のコン...

フィールドを結合するSQL関数

最近、関連テーブル内のすべてのフィールドをクエリし、それらを 1 つのフィールドに再グループ化する必...

MySql でメモリ使用量を削減する方法の詳細な説明

序文デフォルトでは、MySQL はデータベース クエリ データをキャッシュするために大きなメモリ ブ...

Vueはソースコード付きのリファレンスライブラリのメソッドを使用します

monaco-editor-vueの公式ソースコードは次のとおりです。インデックス 'mon...

Vue プロジェクトで TS (TypeScript) を使用するための入門チュートリアル

目次1. Typescriptの紹介2. 設定ファイル webpack 設定3. プロジェクトに.t...

Vueブラウザが監視を再開するための具体的な手順

序文ページを共有するときに、ブラウザの戻るボタンをクリックしてプロジェクトのホームページに戻り、訪問...

vue3+threejs を使用して iView 公式サイトのビッグウェーブ特殊効果の例を模倣する

目次序文1. レンダリング2. コード3. 背景画像素材要約する序文Threejs は、Web ベー...

プロフェッショナルおよび非プロフェッショナルのウェブデザイン

まず、Web ページのスタイルの形成は、主に Web ページのレイアウト設計、ページの色処理、画像と...

MySQLのexplain型の詳細な説明

導入:多くの場合、さまざまな選択ステートメントを使用して必要なデータを照会した後、多くの人は作業が正...

MySQL 5.7 で my.ini ファイルが見つからない場合の解決策

my.ini とは何ですか? my.ini は、MySQL データベースで使用される設定ファイルです...

Vue.js と MJML でレスポンシブなメールを作成する

MJML は、開発者が美しく、応答性に優れ、あらゆるデバイスやメール クライアントで動作する魅力的な...

js を使用して USB スキャナー データを取得する方法

この記事では、USBバーコードスキャナデータを取得するjsの具体的なプロセスを参考までに紹介します。...

Vue.jsは9グリッド画像表示モジュールを実装します

Vue.js を使用して、クリックしてズームできる 9 グリッドの画像表示モジュールを作成しました。...

jQueryは何に使われるのですか?jQueryは実際にはjsフレームワークです

jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...

Reactプロジェクトの新規作成からデプロイまでの実装例

新しいプロジェクトを始めるこの記事では主に、新規プロジェクトを0から1まで取り組むプロセスを記録し、...