我有一个drop-down.vue组件,如下所示:
<template>
<div @mouseenter="handleEnter" @mouseleave="handleLeave" @click="handleClick" v-click-outside="hide">
<slot name="dropdownBtn" :visible="visible" ></slot>
<slot v-if="visible" name="dropdownWrap" :visible="visible"></slot>
</div>
</template>
...
Run Code Online (Sandbox Code Playgroud)
它是一个下拉组件,然后点击或悬停dropdownBtn dropdownWrap将apear/disapear.
现在我有另一个组件需要下拉列表,所以我可以通过两种方式使用下拉列表:
第一:使用嵌套组件
<template>
<ui-dropdown>
<div name="dropdownBtn">...</div>
<div name="dropdownWrap">...</div>
</ui-dropdown>
</template>
...
Run Code Online (Sandbox Code Playgroud)
第二:使用扩展
<template>
<!-- the handleEnter and handleLeave are extend from the dropdown component -->
<div>
<div class="btn" @mouseenter="handleEnter" @mouseleave="handleLeave">...</div>
<div class="popup" @mouseenter="handleEnter" @mouseleave="handleLeave">...</div>
</div>
<template>
<script>
import dropdown from '../dropdown';
export default {
extend: dropdown,
...
}
</script>
Run Code Online (Sandbox Code Playgroud)
我认为第一个更好.但第二个比第一个少一个组件,性能会更好吗?
谁能告诉我哪个更好?
两种方式都有效,我不能说一种方法是正确的而另一种方式不是,这取决于你的要求.
延伸
refs 的存在,使用正确的CSS类名等).组成
如果您担心使用组合方法获得额外组件的开销,您可能希望查看功能组件.
我很少扩展组件,但是当我这样做时,这是因为我想要共享一组相关组件的共同蓝图(基本组件通常不能自行运行,我只是提取出公共代码).
| 归档时间: |
|
| 查看次数: |
2282 次 |
| 最近记录: |