Что было бы действительно хорошим, аккуратным способом создания больших компонентов на основе меньших базовых компонентов, которые содержат общие для всех функций функции.Как интерфейс в мире ООП.
Я пытаюсь что-то вроде этого, но это кажется хакерским.
ReportItem.vue - Базовый компонент
<template>
<div class="report-item">
<div class="report-item__actions">
<button @click="onEdit" type="button">Edit</button>
<button @click="onDelete" type="button">Delete</button>
</div>
<div class="report-item__content">
<slot></slot>
</div>
</div>
</template>
<script>
import '../styles/_report-item.css';
export default {
name: 'report-item',
props: {
data: Object,
type: String,
},
methods: {
onEdit() {
console.log("Editing...")
},
onDelete() {
console.log("Deleted");
}
}
}
</script>
ReportItemText - больший компонент, который разделяет то же редактирование иудаляет функциональность, но содержит больше контента.
<template>
<report-item class="report-item--title">
<h4>{{title}}</h4>
</report-item>
</template>
<script>
import ReportItem from './ReportItem';
export default {
name: 'report-item-title',
components: {ReportItem},
data() {
return {
title: 'Report Title'
}
}
}
</script>
Есть ли лучший способ сделать это с помощью миксинов или даже .extend, но разрешить настройку шаблона?Вот ссылка на коды и ящики с кодом, который работает сейчас с использованием этого подхода - https://codesandbox.io/s/4jmw1l7xow