在vuex模块或纯js模块中使用插件是否有正确/已记录的方式? 我正在使用事件总线来实现它,不确定这是否是正确/最佳方法。请帮忙。
Plugin1.plugin.js:
const Plugin1 = {
install(Vue, options) {
Vue.mixin({
methods: {
plugin1method(key, placeholderValues = []) {
return key;
},
},
});
},
};
export default Plugin1;
在App.vue中:
Vue.use(Plugin1, { messages: this.plugin1data });
在商店/ plain-js模块中
const vue = new Vue();
const plugin1method = vue.plugin1method;
答案 0 :(得分:2)
您可以使用this._vm;
访问 Vue实例
和 Vue全局,先使用import Vue from 'vue';
,然后使用Vue;
我猜您定义了一个实例方法,因此它将是前一种(this._vm.plugin1method()
)
更新
我无法告诉您应该使用哪种方式,因为它看不到您的功能在插件中的定义。
但是,有一个示例应说明实例与全局实例之间的区别
const myPlugin = {
install: function(Vue, options) {
// 1. add global method or property
Vue.myGlobalMethod = function() {
// something logic ...
console.log("run myGlobalMethod");
};
Vue.mixin({
methods: {
plugin1method(key, placeholderValues = []) {
console.log("run mixin method");
return key;
}
}
});
// 4. add an instance method
Vue.prototype.$myMethod = function(methodOptions) {
console.log("run MyMethod");
// something logic ...
};
}
};
Vue.use(Vuex);
Vue.use(myPlugin);
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
this._vm.$myMethod();
Vue.myGlobalMethod();
this._vm.$options.methods.plugin1method(); // <-- plugin mixin custom method
state.count++;
}
}
});
当您提交增量时,即:this.$store.commit('increment')
两种方法都将执行