Básicamente, quiero usar mi propia tienda dentro de vue install y los componentes de vue que agrego a través de mi complemento vue.
Descubrí que puedo usar vuex dentro de la función de instalación real y hacer todo lo que vuex puede hacer, pero parece que no puedo pasarlo a mis componentes personalizados.
¿Hay alguna otra forma de agregar eventos globales en mis SFC que agregue dentro de mi complemento?
import MyComponent from './MyComponent.vue' import MySecondComponentfrom './MySecondComponent.vue' import Vuex from 'vuex' import store from './store.js' const CustomFn = function(message, options) { this.$store.dispatch("someRandomAction", { message, options }) } export default { install(Vue, options) { if (this.installed) { return } this.installed = true Vue.use(Vuex) const storeInstance = new Vuex.Store(store) Vue['store'] = storeInstance // is there a way to add storeInstance to my own components and share one state between them? Vue.component('MyComponent', Vue.extend(MyComponent)) Vue.component('MySecondComponent', Vue.extend(MySecondComponent)) Vue.prototype['$doStuff'] = CustomFn Vue['doStuff'] = CustomFn } }El problema es que no puedo pasar esta instancia de la tienda Vuex dentro de MyComponent y compartir la misma tienda entre varios componentes.
Se supone que las propiedades de los componentes personalizados se proporcionan globalmente en Vue 2 asignándolas a Vue.prototype porque las instancias de los componentes heredan prototípicamente de él.
new Vuex.Store(store) es un error si store ya es una tienda Vuex y no un objeto simple que contiene opciones de tienda. Esto resultará en un mal funcionamiento de la tienda como se muestra en esta pregunta . Incluso si store aún no es una instancia de la tienda, tiene sentido convertirla en una instancia y exportarla en un módulo separado para que pueda importarse en módulos que no sean componentes.
Debería ser:
Vue.prototype.$store = store