Vue3 extends プロパティ
Vue3 では、extendsextends プロパティは非常に便利な機能であり、既存のコンポーネントを継承・拡張することができます。
これを使用することで、extendsコードを繰り返し書くことなく、既存のコンポーネントのロジックを再利用・カスタマイズできます。これは、コードの冗長性を減らし、コードの保守性を高めるのに非常に役立ちます。
使用シーン
extendsextends プロパティは通常、以下のようなシーンで使用されます。
- コンポーネントロジックの再利用:基本コンポーネントがあり、他のコンポーネントがそのロジックを継承する必要がある場合。
- コンポーネントの動作のカスタマイズ:継承に基づいて、特定の動作をカスタマイズまたは上書きする必要がある場合。
- 設定可能なコンポーネントの構築:継承と拡張により、より柔軟で設定可能なコンポーネントを構築します。
基本構文
実例
export default {
extends: BaseComponent,
// ここで新しいオプションを追加したり、既存のオプションを上書きしたりできます。
};
上記のコードでは、extendsextends プロパティによってBaseComponentコンポーネントを継承しました。その後、このコンポーネントに新しいオプションを追加したり、BaseComponent内の既存のオプションを上書きしたりできます。
サンプル
1. 基本コンポーネント
まず、基本コンポーネントを定義します。BaseComponent.vue:
実例
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello from BaseComponent!'
};
}
};
</script>
2. 継承コンポーネント
次に、新しいコンポーネントを作成します。ExtendedComponent.vue、これはBaseComponentを継承し、messageデータを上書きします:
実例
<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!。
注意事項
オプションのマージ:使用する場合、
extendsextends プロパティでは、Vue はオプションをマージします。たとえば、data、methodsdata などのオブジェクト型のオプションに対しては、Vue は浅いマージを行います。同名のプロパティが存在する場合、子コンポーネントのプロパティが親コンポーネントのプロパティを上書きします。ライフサイクルフック:子コンポーネントと親コンポーネントの両方が同じライフサイクルフックを定義している場合、両方のフック関数が呼び出されます。親コンポーネントのフック関数が、子コンポーネントのフック関数よりも先に実行されます。
テンプレートの上書き:
extendsプロパティはロジック部分のみを継承し、テンプレート部分は継承されません。テンプレートを継承する必要がある場合は、slots或mixins。
その他の拡張
Vue3 オプション API