vue 二次封装组件

解决:对于二次封装组件,需要批量继承的有三个。属性、方法、插槽,这三个是最需要,分别如下:

属性继承

<xxx-xxx v-bind="$attrs">
</xxx-xxx>

方法继承

<xxx-xxx v-on="$listeners">
</xxx-xxx>

插槽继承

插槽的话比较特殊,官方没有提供直接的方法,但是不妨碍我们使用一些技巧,如下

<xxx-xxx>
  <template v-for="(index, name) in $slots" :slot="name">
    <slot :name="name" />
  </template>
</xxx-xxx>

vue2完整写法

<xxx-xxx v-bind="$attrs" v-on="$listeners">
   <template v-for="(index, name) in $slots" :slot="name">
      <slot :name="name" />
   </template>
</xxx-xxx>

vue3完整写法

模板

<xxx-xxx v-bind="$attrs" ref="xxxRef">
   <template v-for="(index, name) in slots" #[name]="slotData" :key="name">
      <slot :name="name" v-bind="slotData || {}" />
   </template>
</xxx-xxx>

js setup

import xxxXxx from './xxxXxx.vue'
const xxxRef = ref()
const slots = useSlots()
const expose = {};
onMounted(() => {
  const entries = Object.entries(xxxRef.value);
  for (const [method, fn] of entries) {
    expose[method] = fn;
  }
});
defineExpose(expose);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值