动态创建vue实例
·
nanpangyou
动态创建一个vue实例
在写toast组件时,需要在toastPlugin中使用toast.vue文件动态创建一个vue实例,将toast组件以及相关的样式加载进来(当然也可以使用document.createElement来做,但是原生dom无法使用vue组件的生命周期)
此时则需要在pulgin中动态创建一个vue实例
步骤:
- 引入
toast.vue文件 - 使用
Vue.extend创建构造函数 new一个vue实例- 设置相关的属性(比如slot,事件监听等)
 mount到内存中append到页面中
代码示例
import Toast from "./toast";
export default {
  install(Vue, options) {
    Vue.prototype.$toast = function(message,props) {
      let ToastConstructor = Vue.extend(Toast);
      let toast = new ToastConstructor({
        propsData: {...props}
      });
      toast.$slots.default = [message];
      toast.$mount();
      document.body.appendChild(toast.$el);
    };
  }
};