Hola, tengo el requisito de combinar 2 tiendas vuex en una sola tienda ( ambas tiendas son de diferentes proyectos )
import storeA from '/path'; import storeB from '/path';ahora combina ambas tiendas
const combinedStore = //combine logic as i don't know this logicBusqué mucho en stackoverflow para combinar 2 vuex store pero no encontré ninguna solución tan publicada.
así es como se verá mi tienda vuex en ambas stores
Tienda 1:
// storeA.js const store = { state(){return {}}, actions: {async getData(){...}}, mutations: {}, getters: {}, modules:{ Login } }Tienda 2:
// storeB.js const store = { state(){return {}}, actions: {async getUsers(){...}}, mutations: {}, getters: {}, modules:{ workflow } }Así es como lo intenté:
import StoreA from 'storeA.js'; import StoreB from 'storeB.js'; const newStoreData = Object.assign({},StoreA,StoreB) const newStore = new Vuex.Store({ ...newStoreData });Ahora solo funcionará 1 tienda, otras arrojarán un error como
leyendo first_name nombre de indefinido (es decir,
state.[module].first_name)
El problema se puede reproducir aquí: https://codesandbox.io/s/vuex-playground-forked-1h344?file=/src/main.js
Bifurcación de trabajo original: https://codesandbox.io/s/k012qvkmnv?file=/src/main.js
Ver 3+
Las versiones para amantes probablemente también tengan este método, pero no estoy seguro.
import StoreA from 'storeA.js'; import StoreB from 'storeB.js'; const newStore = new Vuex.Store(storeA); newStore.registerModule('', storeB) Acabo de modificar los archivos store2.js y main.js
enlace al problema resuelto: https://codesandbox.io/s/vuex-playground-forked-6pg4w?file=/src/main.js
Aquí hay una documentación al respecto: https://vuex.vuejs.org/guide/modules.html#dynamic-module-registration