Я думаю, что для вашего совместно используемого (umd) компонента вам может потребоваться использовать экземпляр неглобального хранилища.
Обратной стороной является то, что вам придется обновить отдельные компоненты для монтирования хранилища
Примерно так:
import store from "./store"
export default {
name: "form",
// ...stuff...
beforeCreate() {
this.$store = store(); // No way around this
// register getter
this.myGetter = this.$store.getters['myGetter']
// register action
this.myAction = this.$store.getters['myAction']
},
}
, поскольку вы больше не будете использовать Vue.use(Vuex)
, вы, вероятно, потеряете возможность использовать вкладку Vuex в браузере Vue инструмент разработчика.
Это также предотвращает использование таких функций, как mapAction
и mapGetter
, поэтому мы добавляем их вручную во время beforeCreate.
В качестве альтернативы вы могли бы рассмотреть удаление vuex из компонента и использование vue .Observable, который является всего лишь способом обмена наблюдаемыми переменными между компонентами. Если вам не нужны некоторые функции vuex в общем компоненте, это может иметь смысл.