vue项目中如何直接使用this.xxx调用组件,不用import组件

前提:最近开发了一个导出文件的公共组件,但组内的小伙伴觉得好麻烦,每次都需要import该组件,然后在html模块中写组件的标签,传参等等,觉得好麻烦,希望可以像element UI中的【message】一样,直接 【this.$message({type:"success",text:"成功"})】就可以展示出组件,所以就打算改造一下,方便使用。

1. import组件使用的方式如下:

首先开发了一个【commonExport.vue】,然后在业务中使用。

   

 

 好了,前面说了我们比较常用的使用组件方式,但有点小麻烦,需要写组件标签等等,所以下面对他进行调整,直接绑在vue上作为一个方法去调用。

2.this.$export方法调用的方式使用的方式如下:

(1)首先创建了一个【instance.js】文件

// instance.js 
import commonExport from './index.vue'
import { omit } from "lodash-es"
const Export = {};
let instance = null;
Export.install = Vue => {
  Vue.prototype.$export = (options = {}) => {
    let propsKeys = ["dataType", "selectLength", "total", "exportApi"];
    let props = {};
    propsKeys.forEach(key => {
      props[key] = options[key]
    })
    const ExportConstructor = Vue.extend({
      render(h) {
        return h(commonExport, {
          props: props,
          attrs: {
            ...(omit(options, propsKeys)),
            visible: true
          },
          on: {
            'close'() {
              document.body.removeChild(instance.$el)
              instance.$destroy();
              instance = null;
            }
          }
        })
      }
    })
    if (instance) {
      instance.$destroy();
      instance = null;
    }
    instance = new ExportConstructor()
    instance.$mount(document.createElement('div'))
    document.body.appendChild(instance.$el)
  }
}

export default Export

(2)在main.js中使用Vue.ues()全局使用该插件

import $export from "./commonComponents/commonExport/instance.js"
Vue.use($export)

(3)调用

 (4)效果与引用组件的效果一样一样的

 

posted @ 2022-06-09 11:51  蛙仔  阅读(1125)  评论(0编辑  收藏  举报