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

推薦する

winx64 での mysql5.7.19 の基本的なインストール プロセス (詳細)

1. ダウンロード参考: https://www.jb51.net/softs/451120.ht...

Ubuntu 20.04 に Python 3 仮想環境をインストールする詳細なチュートリアル

以下はすべて仮想マシン上で実行されます1. pip3をインストールするsudo apt で pyth...

JavaScriptで計算機機能を実現するプロセスの詳細な説明

目次1. 電卓機能の紹介2. 計算機ページのデザイン1. ナビゲーションバー2. データ部分3. i...

MySQL の列から行への変換のヒント (共有)

序文:多くのビジネス テーブルでは、歴史的またはパフォーマンス上の理由により、最初のパラダイムに違反...

MySQL に接続されている IP アドレスを表示する方法の例

具体的な方法:まずコマンドプロンプトを開きます。次に、[ mysql -u root -p ] コマ...

CSS でインラインブロック要素間のギャップを削除するいくつかの方法の詳細な説明

最近、モバイルページを制作する際には、レイアウトにインラインブロック要素がよく使われますが、インライ...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

Linuxファイルコマンドの使用

1. コマンドの紹介ファイル コマンドは、ファイルの種類を識別するために使用されます。ファイル チェ...

Mysql を 5.7 にアップグレードした後のグループ クエリの問題を解決する

問題を見つける最近MySQLをMySQL 5.7にアップグレードした後、次のようなクエリでグループ化...

React+Typescriptはカウントダウンフックメソッドを実装します

まず、setIntervalはフックとしてカプセル化されます👇 'react' から...

Navicat を仮想マシン MySQL に接続する際によくあるエラーと解決策

質問1 解決するサービスを開始します: service mysqld start; /sbin/ip...

Linux 論理ボリューム管理 (LVM) の使用法の概要

ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると...

入力タイプ=ファイルスタイルを定義する方法

ファイルコントロールを美しくする理由は何ですか?他の子供たちはみんなきちんとしたきれいな服を着ている...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

vue.js ルーターのネストされたルートの実例

目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...