当前位置:首页 > 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实现继承

分享给朋友:

相关文章

vue3.0实现导航条

vue3.0实现导航条

实现导航条的基本结构 在Vue 3.0中,导航条通常通过组合式API和<template>模板实现。创建一个基础导航条需要定义路由链接和样式结构。以下是一个基于Vue Router的导航条…

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API met…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Com…

vue ref实现

vue ref实现

Vue 中 ref 的实现 在 Vue 中,ref 是一个用于创建响应式引用的 API,适用于基本类型和对象。以下是 ref 的核心实现原理和使用方法。 基本实现原理 ref 通过 Reactive…

vue实现展开

vue实现展开

展开功能的实现方法 在Vue中实现展开功能可以通过多种方式完成,常见的有使用v-show、v-if指令,结合CSS过渡动画或第三方组件库。 使用v-show控制显示隐藏 通过v-show指令可以简…

vue  实现分页

vue 实现分页

实现分页的基本思路 在Vue中实现分页通常需要结合后端API返回的数据和前端的分页组件。分页的核心逻辑包括计算总页数、处理当前页码变化以及触发数据请求。 分页组件示例 使用Element UI的分页…