#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 « вместо этого он работает сейчас.