Vue3 extends プロパティ


Vue3 选项式 APIVue3 オプション API

Vue3 では、extendsextends プロパティは非常に便利な機能であり、既存のコンポーネントを継承・拡張することができます。

これを使用することで、extendsコードを繰り返し書くことなく、既存のコンポーネントのロジックを再利用・カスタマイズできます。これは、コードの冗長性を減らし、コードの保守性を高めるのに非常に役立ちます。


使用シーン

extendsextends プロパティは通常、以下のようなシーンで使用されます。

  1. コンポーネントロジックの再利用:基本コンポーネントがあり、他のコンポーネントがそのロジックを継承する必要がある場合。
  2. コンポーネントの動作のカスタマイズ:継承に基づいて、特定の動作をカスタマイズまたは上書きする必要がある場合。
  3. 設定可能なコンポーネントの構築:継承と拡張により、より柔軟で設定可能なコンポーネントを構築します。

基本構文

実例

import BaseComponent from './BaseComponent.vue';

export default {
  extends: BaseComponent,
  // ここで新しいオプションを追加したり、既存のオプションを上書きしたりできます。
};

上記のコードでは、extendsextends プロパティによってBaseComponentコンポーネントを継承しました。その後、このコンポーネントに新しいオプションを追加したり、BaseComponent内の既存のオプションを上書きしたりできます。


サンプル

1. 基本コンポーネント

まず、基本コンポーネントを定義します。BaseComponent.vue:

実例

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello from BaseComponent!'
    };
  }
};
</script>

2. 継承コンポーネント

次に、新しいコンポーネントを作成します。ExtendedComponent.vue、これはBaseComponentを継承し、messageデータを上書きします:

実例

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
import BaseComponent from './BaseComponent.vue';

export default {
  extends: BaseComponent,
  data() {
    return {
      message: 'Hello from ExtendedComponent!'
    };
  }
};
</script>

この例では、ExtendedComponentはBaseComponentのすべてのロジックを継承しましたが、messageデータを上書きしました。したがって、最終的にレンダリングされる結果はHello from ExtendedComponent!。


注意事項

  1. オプションのマージ:使用する場合、extendsextends プロパティでは、Vue はオプションをマージします。たとえば、data、methodsdata などのオブジェクト型のオプションに対しては、Vue は浅いマージを行います。同名のプロパティが存在する場合、子コンポーネントのプロパティが親コンポーネントのプロパティを上書きします。

  2. ライフサイクルフック:子コンポーネントと親コンポーネントの両方が同じライフサイクルフックを定義している場合、両方のフック関数が呼び出されます。親コンポーネントのフック関数が、子コンポーネントのフック関数よりも先に実行されます。

  3. テンプレートの上書き:extendsプロパティはロジック部分のみを継承し、テンプレート部分は継承されません。テンプレートを継承する必要がある場合は、slots 或 mixins。


Vue3 选项式 APIVue3 オプション API

その他の拡張