基于elementui二次开发全局组件,通过函数方式调用组件,带详细说明

文件结构如下,新建一个文件夹放置组件和js文件

在index.vue文件中写组件,代码如下。本次二次封装的elementui的el-dialog。

<template>
    <div>
        <el-dialog :visible.sync="dialogVisible" width="560px" @close="close">
            <div>
                <div>{{ title }}</div>
                <div>{{ content }}</div>
                <div>
                    <el-button @click="dialogVisible = false">确认</el-button>
                </div>
            </div>
        </el-dialog>
    </div>
</template>

<script>
export default {
    data() {
        return {
            dialogVisible: true,
            title: '',
            content: ''
        }
    },
    methods: {
        close() {
            this.dialogVisible = false;
            this.$el.parentNode.removeChild(this.$el);//清除dom元素
        }
    }
}
</script>

在index.js文件中写如下。注意看注释说明

import Vue from 'vue'
import Tip from './index.vue'

const EditionTipConstructor =  Vue.extend(Tip)//通过Vue下的extend方法可以得到组件构造函数//Tip是引入进来的组件对象
           
export  function EditionTip(options) {//通过函数创建组件
  const EditionTipcom = new EditionTipConstructor({data: options}).$mount()   //new EditionTipConstructor的结果得到vue组件对象 //xx.$mount() 放置渲染出来的dom,并将dom挂载到属性上
   document.body.appendChild(EditionTipcom.$el)//EditionTipcom是个组件对象,EditionTip.$el是组件对象渲染出来的dom
}
   

 最后在main.js中配置

import {EditionTip} from '@/views/editionTip/index.js'
Vue.prototype.$EditionTip = EditionTip;//挂载到vue实例上,可以全局使用了

页面中直接使用就行,我将其写在了mounted中

    mounted() {
        this.$EditionTip({
            title: '重要提示',
            content: '请广大居民用户积极自主下楼做核酸'
        })
    }

学习资源:【前端哈默】如何用函数调用方式创建组件【Vue小知识】_哔哩哔哩_bilibili

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值