当前位置:首页 > VUE

vue3实现继承

2026-01-07 03:39:34VUE

在Vue 3中实现组件继承可以通过组合式API或选项式API完成,以下是具体实现方法:

使用组合式API继承逻辑

通过setup()函数复用逻辑,结合provide/inject或自定义hooks:

// 父组件逻辑 (base.js)
import { ref, provide } from 'vue'
export function useBaseLogic() {
  const count = ref(0)
  const increment = () => count.value++

  provide('baseData', { count, increment })
  return { count, increment }
}

// 子组件
import { inject } from 'vue'
const { count, increment } = inject('baseData')

使用选项式API继承

通过extends属性直接继承组件选项:

// 基础组件 (BaseComponent.vue)
export default {
  data() {
    return { baseValue: '继承属性' }
  },
  methods: {
    baseMethod() {
      console.log('基础方法')
    }
  }
}

// 子组件
import BaseComponent from './BaseComponent.vue'
export default {
  extends: BaseComponent,
  methods: {
    childMethod() {
      this.baseMethod() // 调用继承方法
    }
  }
}

使用渲染函数继承

通过h()函数组合模板:

import { h } from 'vue'
const BaseComponent = {
  render() {
    return h('div', this.$slots.default())
  }
}

export default {
  extends: BaseComponent,
  render() {
    return h('div', [
      h('p', '新增内容'),
      super.render() // 调用父级渲染
    ])
  }
}

通过mixins复用

虽然Vue 3推荐使用Composition API,但mixins仍可用:

const baseMixin = {
  created() {
    console.log('混入生命周期')
  }
}

export default {
  mixins: [baseMixin],
  created() {
    console.log('组件生命周期') // 执行顺序:混入先于组件
  }
}

注意事项

  • 组合式API更适合逻辑复用,选项式API的extends主要处理模板继承
  • 避免多重继承导致代码难以维护
  • 使用TypeScript时需注意类型推导,可通过泛型组件增强类型支持

每种方式适用于不同场景,组合式API的hooks模式是Vue 3推荐的主要继承方案。

vue3实现继承

分享给朋友:

相关文章

vue实现登录

vue实现登录

使用 Vue 实现登录功能 在 Vue 中实现登录功能通常需要结合前端和后端交互,以下是关键步骤和代码示例。 创建登录表单组件 在 Vue 组件中创建一个登录表单,包含用户名和密码输入框以及提交按…

vue实现文档导入

vue实现文档导入

Vue 实现文档导入的方法 在 Vue 中实现文档导入功能通常涉及文件上传、解析和处理。以下是几种常见的方法: 使用原生文件输入和 FileReader 通过 HTML 的原生 <input…

vue实现选择分类

vue实现选择分类

Vue 实现选择分类的方法 使用 v-model 绑定选择值 在 Vue 中可以通过 v-model 指令实现双向数据绑定,适用于下拉选择框(<select>)。以下是一个基本示例:…

vue实现前端注册

vue实现前端注册

Vue 实现前端注册功能 注册表单设计 使用 Vue 的模板语法创建注册表单,包含用户名、邮箱、密码和确认密码字段。表单需绑定 v-model 实现双向数据绑定。 <template>…

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

vue实现表格数据修改

vue实现表格数据修改

实现表格数据修改的基本思路 在Vue中实现表格数据的修改通常涉及以下核心步骤:数据绑定、事件监听、状态管理。通过双向绑定(v-model)或手动更新数据的方式实现动态编辑功能。 基础实现方法 数据…