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 テーブル関連タグ

推薦する

MySQL マスター スレーブ データが矛盾しています。プロンプト: Slave_SQL_Running: 解決策はありません

この記事では、MySQL マスターとスレーブ データ間の不一致の解決方法と、プロンプト「Slave_...

InnoDBのインデックスページ構造、挿入バッファ、適応ハッシュインデックスについての簡単な説明

InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...

Ansibleを使用してディレクトリ内のすべてのコンテンツを削除する方法

Ansible を使用する学生は、以下に示すように、Ansible が特定のフォルダーまたはファイル...

Linux仮想マシンを作成し、仮想マシンネットワークを設定する方法に関するVMwareの詳細なチュートリアル

VMware で Linux 仮想マシンを作成し、VMware と仮想マシンのネットワークを設定する...

1 行のコードでさまざまな IE 互換性の問題を解決します (IE6-IE10)

x-ua-compatible は、IE ブラウザがページを解析およびコンパイルするためのモデルを...

アダプティブ Web デザインを実現する方法に関する関連知識ポイントの要約

「アダプティブ Web デザイン」はどのように機能しますか?実はそれほど難しいことではありません。 ...

Ubuntu 18でターミナルを美しいコマンドラインプロンプトに変更する方法

VMware と Ubuntu を再インストールしましたが、コマンドラインプロンプトが単調すぎて美し...

docker での psql データベースのバックアップとリカバリの詳細な説明

1. DockerでのPostgresデータベースのバックアップ注文: docker exec it...

CentOS7 は rpm を使用して MySQL 5.7 をインストールするチュートリアル図

1. 4つのrpmパッケージをダウンロードする mysql-コミュニティクライアント-5.7.26-...

Ubuntu 20.04 Firefox でビデオを再生できない (Flash プラグインがない) 場合の解決策

1. Flashプラグインパッケージのダウンロードアドレス: https://get.adobe.c...

Dockerデータを完全にクリーンアップする方法

目次定期的に剪定するミラーエビクションコンテナのクリーンアップネットワークソート体積の蒸発完全にクリ...

CSS3アニメーションを使用した簡単な指クリックアニメーションの実装例

この記事では主に、CSS3 アニメーションで簡単な指クリックアニメーションを実装する例を紹介し、皆さ...

VUEはFlappy Birdゲームのサンプルコードを実装します

Flappy Bird は、誰もがアプリでプレイしたことがある非常にシンプルな小さなゲームです。ここ...

MySQLデータベースの増分バックアップのアイデアと方法

MySQL データベースの増分バックアップを実行するには、データベース構成ファイル /etc/my....

MySQL準備原理の詳細な説明

準備のメリットPrepare SQL が生成される理由。まず、MySQL サーバー上で SQL を実...