Избегайте конфликтов между Vuex и IAP плагином в приложении PhoneGap - PullRequest
1 голос
/ 13 апреля 2020

При разработке приложения Phonegap я использую Vuex для управления состоянием приложения. Итак, у меня в App. vue:

// Import store
import store from './vuex/store'

Позже я хочу создать годовую подписку, для которой я использую плагин cordova-plugin-purchase (https://github.com/j3k0/cordova-plugin-purchase ), который экспортирует глобальный объект с именем «store».

Поэтому, когда я пытаюсь использовать метод 'register' этого плагина, я получаю сообщение об ошибке, в котором говорится, что для Vuex нет метода 'register':

store.register()

"TypeError: _vuex_store__WEBPACK_IMPORTED_MODULE_0 __ [ "default"]. register не является функцией. "

Как можно избежать этого конфликта при условии, что это наиболее обновленный и жизнеспособный плагин для создания IAP для проектов Cordova?

Вот мой код:

В приложении. js:

// Init App
new Vue({
  el: '#app',
  template: '<app/>',

  // Register App Component
  components: {
    app: App
  }
});

В приложении. vue:

// Import store
    import store from './vuex/store'

    export default {
        store,
        data() {
            return {...

При входе в систему. vue:

if (response.data.result === 'OK') {

                            this.$store.dispatch('setUserID', response.data.user._id);
                            this.$store.dispatch('setUserEmail', response.data.user.email);
                            this.$store.dispatch('setUserName', response.data.user.name); ...

Позже в компоненте для настройки IAP:

<script>
import store from "../vuex/store";
...
mounted() {
    // Register the product
    store.register([ // being referred here to IAP global store object
      {
        id: ...

Я должен добавить, что я использую Framework7 + Vue + Webpack

1 Ответ

0 голосов
/ 13 апреля 2020

Попробуйте:

import vuexstore from './vuex/store';

// Main
new Vue({
  store: vuexstore,
  render: h => h(App)
}).$mount("#app");

Используйте его в компонентах как this.$store как обычно

У вас есть причина импортировать хранилище Vuex в компонент IAP? Не должно быть, так как vuex будет доступен через this.$store.

. Попробуйте не импортировать хранилище Vuex в этот компонент и просто зарегистрировать другой глобальный объект, как бы вы его не использовали. Прямо сейчас не похоже, что вы импортируете или используете не-Vuex магазин где-либо.

...