Vue3 中全局组件、基本组件、递归组件的用法详解

配置全局组件

有些组件使用频率非常高,几乎每个页面都在使用,这时候我们可以把它封装成全局组件。

例如,下面封装了一个 A 组件:

html 复制代码
<template>
  <div>{{msg}}</div>
</template>
 
<script setup lang="ts">
type Props = {
    msg:string
}
defineProps<Props>()
</script>

注册方法如下:

在 main.ts 中引入组件 A ,然后使用 app 调用 component,第一个参数是组件名称,第二个参数是组件实例(注意:切记不能放到mount 后面,这是一个链式调用)

javascript 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import A from './components/A.vue'
 
const app=createApp(App)
app.component('A',A)
app.mount('#app')

在其他 vue 页面中直接使用即可,无需引入,使用方法如下:

html 复制代码
<template>
 <A></A>
</template>

批量注册全局组件

其实就是通过 for 循环遍历一下然后通过 app.component 注册。

配置局部组件

其实就是在一个组件内(A)通过 import 去引入别的组件(B) 。

因为 B 组件只能在 A 组件内使用,所以是局部组件;如果 C 组件想用 B 组件,那么就需要 C 组件也手动 import 引入 B 组件,用法如下:

javascript 复制代码
<script setup lang="ts">
import B from './components/B.vue'
</script>

<template>
    <div>这是A组件</div>
    <B></B>
</template>

配置递归组件

原理跟我们写 js 递归是一样的,自己调用自己,通过一个条件来结束递归,否则会导致内存泄漏。

这里,假如我们创建的组件是 A.vue,递归组件调用方式如下:

  1. 直接使用文件名当组件名,那么递归调用如下:
html 复制代码
<template>
  <div>
    <!-- 递归调用 A-->
    <A/>
  </div>
</template>
<script setup lang="ts">
、、、
</script>
  1. 在增加一个 script 通过 export 添加 name,那么递归调用如下:
javascript 复制代码
<template>
  <div>
    <!-- 递归调用 A -->
    <RecursiveComponent />
  </div>
</template>

<script setup lang="ts">
、、、
</script>

<script lang="ts">
export default {
  name:"RecursiveComponent"
}
</script>
相关推荐
计算机毕设定制辅导-无忧学长23 分钟前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
宿6742 小时前
vue3-config
前端·javascript·vue.js
ShineWinsu5 小时前
对于 Vue 3:从为什么学 Vue,到声明式渲染与数据响应式的解析
前端·javascript·vue.js
leoZ2316 小时前
第 6 篇:SchemaForm 渲染器核心实现
前端·javascript·vue.js·人工智能·神经网络·机器学习·自然语言处理
CoderYanger6 小时前
前端基础——JavaScript(基础语法)(下篇)
java·开发语言·前端·javascript·程序人生·面试·职场和发展
还是大剑师兰特7 小时前
vue项目浏览器版本判别,低于IE11跳转到新页面
前端·javascript·vue.js
想吃火锅10057 小时前
【leetcode】42.接雨水js
开发语言·javascript·ecmascript
雪芽蓝域zzs8 小时前
第十六节:递归组件实现无限层级折叠侧边栏菜单
开发语言·javascript·ecmascript
BillKu9 小时前
vue3 字符串排序 localeCompare,确保排序为 “B01“, “B10“, “B2“
前端·javascript·vue.js
Nayana10 小时前
《Web 到 HarmonyOS》-- 第一课:前端经验哪些能带走
vue.js·harmonyos