自学内容网 自学内容网

vue-注册全局组件并使用

背景:

对于定制化的组件,一般是写完直接引用到页面中,在页面的components选项中声明使用。

对于复用性强的组件,建议封装成一个公共组件,全局注册,注册之后,全局组件可以在任何其他组件的模板中使用(通过ref属性获取对应组件的引用)。


以下介绍如何封装全局组件

1、创建一个全局组件
<template>
    <div>
        <p>这是一个全局组件</p>
    </div>
</template>
<script>
export default {
    name: 'MyGlobalComponent',
    data () {
        return {
            loading: false,
            drawerVisible: false,
        }
    },
    methods: {
        init() {
            this.drawerVisible = true
            this.loadData()
        },
}
</script>
2、在主文件(通常是main.js)中,引入这个组件并注册为全局组件

在components文件夹中,创建MyGlobalComponent.vue,MyGlobalComponent2.vue组件,创建register.js文件

方法1:单个引入

//main.js文件
import Vue from 'vue';
...
import MyGlobalComponent from '@/components/MyGlobalComponent.vue';
import MyGlobalComponent2 from '@/components/MyGlobalComponent2.vue';
 
// 注册全局组件
Vue.component('my-global-component', MyGlobalComponent);
Vue.component('my-global-component2', MyGlobalComponent2);

// 创建Vue实例
new Vue({
  el: '#app',
  // 其他选项...
});

方法2:批量引入

import MyGlobalComponent from './MyGlobalComponent.vue';
import MyGlobalComponent2 from '.MyGlobalComponent2.vue';

export default {

  install(Vue) {
    Vue.component("MyGlobalComponent", MyGlobalComponent);
    Vue.component("MyGlobalComponent2", MyGlobalComponent2);
  }
}
//main.js文件
import RegisterComponent from "./components/register.js"

Vue.use(RegisterComponent) // 全局注册组件

// 创建Vue实例
new Vue({
  el: '#app',
  // 其他选项...
});
3、在任何其他组件的模板中直接使用这个全局组件,无需在每个组件中重复引入
<template>
  <div>
    <my-global-component ref="myComponent"></my-global-component>
  </div>
</template>
 
<script>
export default {
  methods: {
    callGlobalComponentMethod() {
      this.$refs.myComponent.init()
    }
  }
}
</script>


原文地址:https://blog.csdn.net/xxuxioxx/article/details/144219824

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!