Nuxt — Как вызвать геттеров в глобальном mixins?

#vue.js #nuxt.js #vuex #mixins

#vue.js #nuxt.js #vuex #миксины

Вопрос:

Привет всем, вот код микширования, который я написал, поскольку я хочу использовать это для макета default.vue и error.vue. Я пытаюсь избежать дублирования кода в двух макетах.

 export default {
  provide () {
    return {
      copyRight: this.getCopyrightText,
      email: this.getEmail,
      socials: this.getSocials
    }
  },
  computed: {
    getMenu () {
      return this.store.getters['general/getMenu'].menu
    },

    getSocials () {
      return this.store.getters['general/getSocialDetails']
    },

    getCopyrightText () {
      return this.store.getters['general/getCopyRight']
    },

    getEmail () {
      return this.store.getters['general/getEmail']
    }
  },
  middleware: 'load-menu-items'
}
 

Это то, что я получаю: не удается прочитать свойство ‘length’ undefined

Что я делаю не так?

Ответ №1:

Я предполагаю, что в вашем компоненте вы используете .length данные, которые получаете от метода getter, что, вероятно, и вызывает ошибку.

Прежде всего, вы должны выполнить отладку, чтобы убедиться, что ваш геттер действительно работает так, как ожидалось. Попробуйте это и посмотрите на вывод в консоли для каждого вычисляемого свойства getter. Если undefined выводится на консоль, вы получите сообщение об ошибке, которое вы опубликовали, если используете .length на нем

 getEmail () {
  let data = this.store.getters['general/getEmail'];
  console.log(data);
  return data;
}
 

Если вы опубликуете компонент, который использует этот миксин, возможно, я смогу помочь вам в дальнейшем.

Комментарии:

1. ах, это моя ошибка, я забыл добавить « the this.$ store « вместо этого он работает сейчас.