vue2注册全局组件或全局引入组件库;全局引入组件后,使用报错:Unknown custom element: <xxx> - did you register the component corre

目录

一、单个引入

二、批量引入

三、结果及注意事项

四、总结


如嫌繁琐,请直接看总结部分

全局注册组件或组件库:在main.js(Vue打包入口文件)中全局引入组件或组件库后,在项目的其他地方就可以直接使用被引入的组件,无需手动引入。

一、单个引入

    1.需要注册的组件较少时,可以单个引入组件

    1)引入组件 Vue.component(组件名称,组件)

    2)引入组件库  Vue.use(组件库)

import Vue from 'vue';
import TopPatientInfo from '@/components/TopPatientInfo';
import ElementUI from 'element-ui';
Vue.component('Form',TopPatientInfo)
Vue.use(ElementUI)

二、批量引入

1.components.js:定义要注册的组件;并且通过 Vue.component和Vue.use生成具有 install方法的对象 ComponentList

import TopPatientInfo from '@/components/TopPatientInfo';
import ElementUI from 'element-ui';
import Vue from 'vue';
// 1.待注册组件
const registerComponentList = {
    TopPatientInfo: TopPatientInfo,
    ElementUI: ElementUI,
}

// 2.组装好的注册对象
export let ComponentList = {
    install() {
        for (let [itemKey, item] of Object.entries(registerComponentList)) {
            console.log(
                '正在注册组件', itemKey, item
            )
            // 组件库:已经有install方法,直接用Vue.use注册;
            if (item.install) {
                Vue.use(item)
            } 
            // 自定义组件,使用Vue.component注册
            else {
                Vue.component(itemKey, item)
            }
        }
    }
}

2.main.js---vue2打包入口文件

1)直接引入生成的带有install方法的ComponentList

2)  Vue.use引入

import Vue from 'vue';
import {ComponentList} from './components.js'
Vue.use(ComponentList)

3.完整步骤

   1)提供需要批量注册的组件(const定义或批量引入文件)

   2)obj要有 install方法定义批量注册 组件的逻辑,install方法实际也是 调用Vue.component(组件名称,组件) 或 Vue.use(组件库)来注册

   3)Vue.use(obj)注册

三、结果及注意事项

1.结果

    在项目其他地方使用到上述代码注册的  组件库 ElementUI 或 组件TopatientInfo时,就无需使用import引入,在components:{}中注册。

2..Vue.component必须提供 组件名称,不然会有警告:vue.esm.js?9b69:5059 [Vue warn]: Unknown custom element: <TopPatientInfo> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

详细错误如下:

四、总结

1.单个引入:

    1)引入自定义组件:Vue.component('组件名',组件)

    2)  引入组件库:Vue.use(组件库)

2.批量引入:相当于自己组装生成一个组件库ComponentList,然后再用Vue.use注册。

    1)定义好要引入的组件列表registerComponentList

     2)定义一个带有install方法的对象ComponentList(自己生成的组件库),install方法批量处理组件的引入;本质的引入方式还是 单个引入使用的Vue.component和Vue.use方法

    3)mian.js使用 Vue.use()注册整个组件库ComponentList

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/ 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值