当前位置:首页 > VUE

vue 实现动态组件

2026-02-18 05:49:06VUE

Vue 动态组件的实现方法

使用 <component> 标签

Vue 提供了内置的 <component> 标签,通过 is 属性动态切换组件:

<template>
  <component :is="currentComponent"></component>
</template>

<script>
import ComponentA from './ComponentA.vue'
import ComponentB from './ComponentB.vue'

export default {
  data() {
    return {
      currentComponent: 'ComponentA'
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

动态组件与 keep-alive

配合 <keep-alive> 可以缓存组件状态:

<keep-alive>
  <component :is="currentComponent"></component>
</keep-alive>

通过 v-if 实现

可以使用多个 v-if 条件判断来切换组件:

vue 实现动态组件

<template>
  <ComponentA v-if="showComponentA" />
  <ComponentB v-else />
</template>

<script>
import ComponentA from './ComponentA.vue'
import ComponentB from './ComponentB.vue'

export default {
  data() {
    return {
      showComponentA: true
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

使用路由实现动态组件

通过 Vue Router 的命名视图实现动态组件:

const router = new VueRouter({
  routes: [
    {
      path: '/',
      components: {
        default: ComponentA,
        viewB: ComponentB
      }
    }
  ]
})

动态加载异步组件

使用 defineAsyncComponent 实现按需加载:

vue 实现动态组件

const AsyncComponent = defineAsyncComponent(() =>
  import('./AsyncComponent.vue')
)

组件工厂模式

通过函数式编程动态创建组件:

export default {
  methods: {
    getComponent(type) {
      return type === 'A' ? ComponentA : ComponentB
    }
  }
}

动态组件传参

动态组件可以像普通组件一样传递 props:

<component :is="currentComponent" :someProp="value"></component>

动态组件事件监听

可以监听动态组件发出的事件:

<component :is="currentComponent" @custom-event="handleEvent"></component>

以上方法可以根据具体需求选择使用,<component> 标签是最直接的动态组件实现方式,而结合 keep-alive 可以优化性能。异步组件适合大型应用的代码分割场景。

标签: 组件动态
分享给朋友:

相关文章

uniapp 分页组件

uniapp 分页组件

uniapp 分页组件实现方法 在uniapp中实现分页功能,可以通过自定义组件或使用第三方组件库完成。以下是几种常见实现方式: 自定义分页组件 创建一个名为uni-pagination的组件,模板…

如何缓存react组件

如何缓存react组件

缓存React组件的方法 React.memo 使用React.memo对函数组件进行浅比较缓存,避免不必要的重新渲染。适用于props不变的场景。 const MemoizedComponen…

vue实现父子组件

vue实现父子组件

Vue 父子组件通信实现方式 1. 父组件向子组件传递数据(Props) 父组件通过 props 向子组件传递数据,子组件通过 props 接收数据。 父组件模板: <template>…

vue实现分页组件

vue实现分页组件

Vue 分页组件实现 基础分页组件结构 创建一个名为 Pagination.vue 的文件,包含以下基础模板和逻辑: <template> <div class="pagina…

vue实现动态筛选

vue实现动态筛选

Vue实现动态筛选的方法 动态筛选是Vue应用中常见的功能需求,可以通过多种方式实现。以下是几种常用的实现方法: 使用计算属性实现筛选 计算属性是Vue中实现动态筛选的理想选择,它会根据依赖的数据自…

vue实现动态表达

vue实现动态表达

Vue 动态表达的实现方法 在 Vue 中实现动态表达可以通过多种方式完成,以下是几种常见的实现方法: 使用计算属性(Computed Properties) 计算属性适用于需要基于响应式数据动态计…