【发布时间】:2019-03-10 14:24:28
【问题描述】:
在包含所有功能的较小基础组件的基础上构建更大组件的真正好方法是什么?就像 OOP 世界中的一个界面。
我正在尝试这样的事情,但感觉很老套。
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>
有没有更好的方法来使用 mixins 甚至 .extend 但允许自定义模板? 这是一个代码框链接,指向现在使用这种方法工作的代码 - https://codesandbox.io/s/4jmw1l7xow
【问题讨论】:
-
查看scoped slots 文档。
标签: javascript vue.js components vue-component