Vue3如何注册全局组件

437 阅读1分钟

需求背景

当一个组件在项目中多处被用到时,就需要将其设置成一个全局组件,省得每次使用都得写上对应的导入代码。

具体操作

1:批量注册组件

在src/components下新建一个index.ts 文件,写上如下代码:

import type {App, Component} from 'vue';
import Popover from '../lib/popover/popover.vue';
import Button from '../lib/Button.vue';
// { [propName: string]: Component }这个类型定义不可缺少,否则你使用全局标签时编辑器无法将其识别成组件,进而有些烦人的提示
const components: { [propName: string]: Component } = {
    ZPopover: Popover,
    ZButton: Button
};
export default {
    install: (Vue: App) => {
        for (const key in components) {
            Vue.component(key, components[key]);
        }

    }
};

2. 在main.ts中挂载

当你是通过install方法注册的组件时,在main.ts中就需要用use来使其生效

import globalComponents from './components/index';
const app = createApp(App);
app.use(globalComponents);

app.mount('#app');

3. 到任意组件中使用

😄经过上述两步就能成功实现的组件的全局使用.

<z-button> </z-button>
<z-popver> </z-popver>