欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vue.extend的基本使用

程序员文章站 2024-03-04 16:54:53
...

使用extend自定义一个全屏loading组件

1、定义loading组件

import Vue from "Vue";
const LoadingCom = Vue.extend({
	template:`<div 
				style="position:fixed;left:0;right:0;width:100%;height:100%;z-index:999;background:#d8d8d8;color:#000;"
				id="aaa"
			>
			{{msg}}
			</div>`,
	props:{
		msg:{
			type:String,
			default:""
		}
	},
	created() {//还可以有其它的生命周期
		console.log("组件生命周期");	
	}
});

2、实例化loading组件信息

function loading(msg){
	const div = document.createElement("div");
	div.setAttribute("id","aaa");//这里注意ID要跟第一步的组件ID一致
	document.body.append(div);
	new LoadingCom({//实例化组件信息,这里的props会替换掉第一步中组件的props
		props:{
			msg:{
				type:String,
				default:msg
			}
		}
	}).$mount("#aaa");
	return () => {//返回一个方法,调用此方法会移除掉这个组件
		document.body.removeChild(document.getElementById("aaa"));
	}
}

3、挂载在全局上

Vue.prototype.$load = loading;

4、在xxx.vue界面中使用

<template>
	<div id="app">
		<el-button @click="show">按钮</el-button>
	</div>
</template>
<script>
export default {
	name:"App",
	methods:{
		show(){
			const load = this.$load("正在加载");
			setTimeout(() => {
				load();
			}, 2000);
		}
	}
}
</script>
<style lang="scss">

</style>

5、如果控制台出现这个错误,可以在vue.config.js中设置下面的参数配置(runtimeCompiler:true)

Vue.extend的基本使用

Vue.extend的基本使用

相关标签: Vue