vue组件二次封装,组件继承

vue组件二次封装,组件继承


前言

使用第三方组件库时,无法直接修改组件,为了满足使用场景,我们可以二次封装组件。另一个使用场景是,多个组件合并为一个组件,例如:带有分页的表格、带有搜索的树组件。

s-tree为例子,为了方便使用,我们需要自己的s-tree组件可以完全使用Tree的原有属性props、事件event、插槽slot;

做后台的小伙伴,可能会认为是s-tree继承了tree,但实际并不是继承……


一、属性props

v-bind=“$attrs”

<!-- 这里是STree -->
<div>
	<Tree v-bind="$attrs”></Tree>
</div>

二、事件event

v-on=“$listeners”

<!-- 这里是STree -->
<div>
	<Tree v-bind="$attrs" v-on="$listeners"></Tree>
</div>

三、插槽slot

<template #[slotName]="slotProps" v-for="(slot, slotName) in $slots" >
    <slot :name="slotName" v-bind="slotProps"/>
</template>
<!-- 这里是STree -->
<div>
	<Tree v-bind="$attrs" v-on="$listeners">
		<template #[slotName]="slotProps" v-for="(slot, slotName) in $slots" >
		    <slot :name="slotName" v-bind="slotProps"/>
		</template>
	</Tree>
</div>

四、使用

此处以iview的Tree为例,我们的s-tree已经完全继承了Tree所有的东西

<s-tree :data="data" multiple show-checkbox @on-check-change="onChange" ></s-tree>

剩下的就是随意改造s-tree,你可以为它加个搜索功能;如果s-tree的props与Tree相同,则可以覆盖Tree的props


五、总结

以上只是常规组件二次封装的方法,实际使用时,应该根据情况灵活的处理,例如自定义插槽,无法继承,就需要我们自行定义并使用插槽。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue组件二次封装,可以考虑以下思路: 1. 组件功能的抽象化:首先要明确组件的功能和用途,并将其抽象化。考虑组件在不同场景下的灵活性和可复用性。 2. Props 参数的处理:通过Props参数,可以将组件的配置参数暴露给父组件,使得父组件可以对组件进行配置。可以考虑设置默认值、类型检查等,以提高组件的健壮性。 3. 插槽的使用:Vue的插槽机制可以使得组件更具灵活性。可以将插槽用于组件内部的内容分发,使得父组件可以自定义组件部分内容。 4. 事件的处理:通过自定义事件,可以让父组件与子组件进行通信。可以考虑在适当的时机触发自定义事件,并在父组件中监听并处理事件。 5. 样式的定制化:通过为组件添加CSS类名或样式绑定,可以使得组件的样式更具可定制性。可以考虑提供一些预设的样式选项,或者通过CSS变量来动态调整样式。 6. 组件的复用:在封装组件时,要考虑到组件的复用性。可以将一些通用的逻辑和样式提取出来,形成独立的Mixin或者公共组件,以方便在项目中复用。 7. 文档和示例的编写:在封装组件的同时,要编写清晰的文档和示例,方便其他开发人员使用和理解组件的功能和用法。 总结起来,Vue组件二次封装的思路是明确组件的功能和用途,通过Props参数、插槽、事件等机制,提高组件的灵活性和可复用性,并编写清晰的文档和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值