日常开发过程中封装了一些通用的公共组件,但是每次调用时不想引入组件结构,这时候就需要挂载到vue上供所有的实例用类似方法的形式调用,所以需要对组件进行注册。
假设我们封装一个公共组件confirm.vue,
然后我们把它挂载到vue上:
import Confirm from "./confirm"; export default { install(Vue) { function confirm(data = {}) { const { confirm, cancel, close, ...restProps } = data; const ConfirmConstructor = Vue.extend(Confirm); const instance = new ConfirmConstructor({ el: document.createElement("div"), propsData: { ...restProps, }, }); if (confirm) { instance.$on("confirm", confirm); } if (cancel) { instance.$on("cancel", cancel); } document.querySelector("body").appendChild(instance.$el); } Vue.prototype.$confirm = confirm; return confirm; }, };
这时候我们就可以用方法调用了:
this.$confirm({ title: "自定义标题", message: "自定义消息", cancelText: "cancel", confirmText: "ok", confirm: () => { alert("confirm"); }, cancel: () => { alert("cancel"); }, });