ホームページ ウェブフロントエンド フロントエンドQ&A Vue の mixin とコンポーネントの違いは何ですか

Vue の mixin とコンポーネントの違いは何ですか

Dec 13, 2022 pm 06:34 PM
vue コンポーネント mixin

ミックスインとコンポーネントの違い: コンポーネントが参照された後、親コンポーネント内に別のスペースを開いて、親コンポーネントの props からの値に基づいて対応する操作を実行するのと同じです。本質的に、この 2 つは依然として別個のものであり、比較的独立しています。コンポーネントが導入された後、ミックスインは、展開された親コンポーネントのさまざまな属性メソッドと同等であり、データやその他のメソッド、メソッドやコンポーネントなどのコンポーネントの内部コンテンツと同等になります。他の属性は、親コンポーネントの対応するコンテンツとマージされます。

Vue の mixin とコンポーネントの違いは何ですか

#このチュートリアルの動作環境: Windows7 システム、vue3 バージョン、DELL G3 コンピューター。

Mixin とは何ですか?

ミックスインは、Vue コンポーネントで再利用可能な機能を配布するための非常に柔軟な方法です。

混合オブジェクトには、任意のコンポーネント オプションを含めることができます。

コンポーネントがミックスイン オブジェクトを使用すると、ミックスイン オブジェクトのすべてのオプションがコンポーネント自体のオプションに混合されます。 [関連する推奨事項:

vuejs ビデオ チュートリアル Web フロントエンド開発 ]

mixin とコンポーネントの違い

コンポーネントが参照された後、親コンポーネント内に別のスペースを開いて、親コンポーネントの props からの値に基づいて対応する操作を実行することと同じです。本質的に、この 2 つは別のものです。そして比較的独立しています。

コンポーネントが導入された後、ミックスインは、データやその他のメソッド、メソッド、その他の属性などのコンポーネントの内部コンテンツを、親コンポーネントの対応するコンテンツとマージします。導入後、親コンポーネントの各種プロパティメソッドが拡張されたことに相当します。

単純なコンポーネント リファレンス:

  • 親コンポーネントのサブコンポーネント>>>親コンポーネントのサブコンポーネント

mixins :

  • 親コンポーネント 子コンポーネント>>> 新しい親コンポーネント

これは、vue のパブリック メソッドを登録するのと似ています。 bound 複数のコンポーネントまたは複数の Vue オブジェクト インスタンスで使用されます。もう 1 つの点は、プロトタイプ オブジェクトにメソッドを登録するのと似ています。インスタンス オブジェクト、つまりコンポーネントまたは Vue インスタンス オブジェクトでは、同じ関数名を持つメソッドを定義してオーバーライドすることができます。サブクラスと親クラス。

ミックスインと vuex の違い

ミックスイン: 共有変数を定義し、各コンポーネントで使用できます。コンポーネントに導入された後、 、各変数は互いに独立しており、値の変更はコンポーネント内で相互に影響しません。オブジェクトが同じ場合、コンポーネントは状態管理に使用される mixins

vuex を上書きします。その中で定義された変数は、各コンポーネントで使用および変更できます。任意のコンポーネントでこの変数の値を変更した後、 other コンポーネント内のこの変数の値も変更されます。

ミックスインの使用

1. まず、elTableAdsorbent.js

export const elTableAdsorbent = {
  data() {
    return {
      count:10
    }
  },
  methods: {
    // 显示页面中所有内容
    handleCount() {
      this.count++
  }
}
ログイン後にコピー
などの js ファイルを作成します。または

// 定义一个混入对象
    var myMixin = {
        data(){
            return{
                parent: 405
            }
        },
        mounted: function () {
            this.hello()
        },
        methods: {
            hello: function () {
                console.log(this.parent, 'hello from mixin!')
            }
        }
    }
ログイン後にコピー
2. 次に、この要件を必要とする vue ページにそれを導入し、

<el-button type="primary" @click="handleCount">{{count}}</el-button>
 
import { elTableAdsorbent } from '@/utils/mixin/elTableAdsorbent'
 
export default {
  mixins: [elTableAdsorbent],
  data() {
    return {}
  },
  created(){},
  methods:{}, 
  watch:{}
}
ログイン後にコピー
3 を使用します。同じ名前のフック関数は配列にマージされるため、すべてのフック関数が配列にマージされます。呼ばれる。さらに、ミックスイン オブジェクトのフックは、コンポーネント自体のフックよりも前に呼び出されます。

var mixin = {
  created: function () {
    console.log('混入对象的钩子被调用')
  }
}

new Vue({
  mixins: [mixin],
  created: function () {
    console.log('组件钩子被调用')
  }
})

// => "混入对象的钩子被调用"
// => "组件钩子被调用"
ログイン後にコピー
4. 2 つのオブジェクトのキー名が競合する場合、コンポーネント オブジェクトのキーと値のペアが取得されます。

var mixin = {
  methods: {
    conflicting: function () {
      console.log('from mixin')
    }
  }
}

var vm = new Vue({
  mixins: [mixin],
  methods: {
    conflicting: function () {
      console.log('from self')
    }
  }
})
vm.conflicting() // => "from self"
ログイン後にコピー

ミックスインのアプリケーション

var install = function (Vue, options) {
  // 1. 添加全局方法或属性
  Vue.myGlobalMethod = function () {
    // 逻辑...
  }
  // 2. 添加全局资源
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // 逻辑...
    }
    ...
  })
  // 3. 注入组件
  Vue.mixin({
    created: function () {
      // 逻辑...
    }
    ...
  })
  // 4. 添加实例方法
  Vue.prototype.$myMethod = function (options) {
    // 逻辑...
  }
}
ログイン後にコピー
(学習ビデオ共有:

vuejs 入門チュートリアル, プログラミングの基礎ビデオ)

以上がVue の mixin とコンポーネントの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

VUEのボタンに関数を追加する方法 VUEのボタンに関数を追加する方法 Apr 08, 2025 am 08:51 AM

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

VueでWatchの使用方法 VueでWatchの使用方法 Apr 07, 2025 pm 11:36 PM

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

Vue Multi-Page開発とはどういう意味ですか? Vue Multi-Page開発とはどういう意味ですか? Apr 07, 2025 pm 11:57 PM

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

vue.jsでJSファイルを参照する方法 vue.jsでJSファイルを参照する方法 Apr 07, 2025 pm 11:27 PM

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vueによる前のページに戻る方法 Vueによる前のページに戻る方法 Apr 07, 2025 pm 11:30 PM

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

VUEトラバーサルの使用方法 VUEトラバーサルの使用方法 Apr 07, 2025 pm 11:48 PM

Vue.jsには配列とオブジェクトを通過するには3つの一般的な方法があります。V-Forディレクティブは、各要素をトラバースしてテンプレートをレンダリングするために使用されます。 V-BindディレクティブをV-Forで使用して、各要素の属性値を動的に設定できます。 .mapメソッドは、配列要素を新しい配列に変換できます。

VueのDivにジャンプする方法 VueのDivにジャンプする方法 Apr 08, 2025 am 09:18 AM

VUEにDIV要素をジャンプするには、VUEルーターを使用してルーターリンクコンポーネントを追加するには、2つの方法があります。 @clickイベントリスナーを追加して、これを呼び出します。$ router.push()メソッドをジャンプします。

See all articles