ホームページ  >  記事  >  ウェブフロントエンド  >  vue は親クラスのメソッドをオーバーライドします

vue は親クラスのメソッドをオーバーライドします

WBOY
WBOYオリジナル
2023-05-08 12:50:07765ブラウズ

Vue を開発する場合、コンポーネントの継承の使用がよく関係します。通常、親コンポーネントのメソッドは子コンポーネントによって継承され、呼び出されますが、場合によっては、特定のニーズを満たすために親コンポーネントのメソッドをオーバーライドする必要があります。この記事では、Vue で親コンポーネントをオーバーライドする方法を紹介します。

親コンポーネントのメソッドをオーバーライドする必要がある理由

通常、親コンポーネントのメソッドは複数の子コンポーネントで共有されます。場合によっては、サブコンポーネントが独自の条件に応じて親コンポーネントのメソッドを変更する必要がある場合、親コンポーネントのメソッドをオーバーライドする必要があります。たとえば、親コンポーネントによって渡されるパラメータを変更する必要がある場合、または親コンポーネントの特定の操作をインターセプトする必要がある場合、親コンポーネントのメソッドをオーバーライドする必要があります。

親コンポーネントのメソッドをオーバーライドする方法

Vue では、親コンポーネントのメソッドをオーバーライドする主な方法が 2 つあります。v-bind を使用してパラメーターをバインドするか、Vue を使用します。 extend メソッドを使用して子クラスコンポーネントを作成します。以下では、これら 2 つの方法をそれぞれ紹介します。

v-bind を使用してパラメータをバインドする

Vue では、親コンポーネントが子コンポーネントにパラメータを渡すときに、v-bind を通じてデータをバインドできます。このプロセス中に、子コンポーネントが親コンポーネントによって渡されたパラメータを変更したい場合は、props 属性を介してコールバック関数を渡し、このコールバック関数で親コンポーネントをオーバーライドするメソッドを実装するだけで済みます。

たとえば、親コンポーネントとして Counter コンポーネントがあり、カウント データと show メソッドがあるとします。

<template>
  <div>
    <button @click="showCount">Show count</button>
  </div>
</template>

<script>
  export default {
    data() {
        return {
            count: 0
        }
    },
    methods: {
        show() {
            alert(this.count)
        }
    }
  }
</script>

次に、子コンポーネントを使用して show メソッドをオーバーライドしたいとします。これにより、show メソッドが呼び出されるたびに、最初に「Before show:」が表示され、次に count の値が表示されます。現時点では、v-bind を使用して、子コンポーネントに新しい show メソッドをバインドできます。

<template>
  <div>
    <button @click="showCount">Show count</button>
  </div>
</template>

<script>
  export default {
    props: {
        show: Function
    },
    mounted() {
        this.show = () => {
            alert('Before show:' + this.count)
            this.$props.show()
        }
    }
  }
</script>

この方法で、親コンポーネントに show メソッドを渡すと、子コンポーネントはこのメソッドを書き換えます。削除され、変更された機能が追加されました。

Vue.extend メソッドを使用してサブクラス コンポーネントを作成する

親コンポーネントをオーバーライドするメソッドを実装する別の方法は、Vue.extend メソッドを使用してサブクラス コンポーネントを作成することです。このメソッドは、親コンポーネントの複数のメソッドをオーバーライドする必要があるシナリオに適しており、子コンポーネントは複数の親コンポーネントで使用する場合に便利です。

Vue.extend メソッドを使用すると、親コンポーネントに基づいて新しいコンポーネント コンストラクターを作成し、新しいコンポーネント コンストラクターのデータ、メソッド、その他の属性を定義して親コンポーネントを書き直すことができます。たとえば、Counter コンポーネントの show メソッドを次のように書き換えることができます。

import Vue from 'vue'

const Child = Vue.extend({
    data() {
        return {}
    },
    methods: {
        show() {
            alert('Before show:' + this.count)
            this.$super.show()
        }
    }
})

export default {
    components: {
        Child
    },
    data() {
        return {
            Count: Child
        }
    },
    methods: {
        show() {
            alert(this.count)
        }
    }
}

このコードでは、Vue.extend メソッドを通じて Child という名前のコンストラクターを作成し、Child コンポーネントで show メソッドを定義し、呼び出します。 this.$super を介して親コンポーネントの show メソッド。次に、Counter コンポーネントでは、Child コンポーネントをカウンター コンポーネントのコンストラクターとして使用し、show メソッドが呼び出されると、Child コンポーネントの show メソッドがトリガーされます。

概要

上記は、Vue で親コンポーネントのメソッドを書き換える 2 つの方法です。それぞれの方法には異なるアプリケーション シナリオがあり、特定の状況に基づいて実装する方法を選択する必要があります。 Vue を使用する場合、コンポーネントの再利用とスケーラビリティを向上させるために、コンポーネントの継承の使用を試みることができます。

以上がvue は親クラスのメソッドをオーバーライドしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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