【发布时间】:2017-08-30 07:51:27
【问题描述】:
使用 webpack vue 模板和 vuex。我的商店中有一个突变
const mutations = {
addWeekDataList(state, a) {
state.weekDataList = a;
},}
在组件内的 ajax 请求中提交
axios.get('URL').then(function (response) {
let weekDataList = _.values(response);
that.$store.commit('addWeekDataList', weekDataList);});
然后我的商店里有一个吸气剂
const getters = {
getWeekRunData: state => {
return state.weekDataList[state.currentWeek].filter(activity => activity.type === 'Run' );
},
}
在组件的计算属性中调用
computed: {
weekRunDataTime: function() {
return Utils.convertSecsToHrsMins(Utils.addFields(this.weekRunData, 'moving_time'));
},
...mapGetters({
weekRunData: 'getWeekRunData',
}),
},
到目前为止没有错误,计算属性在准备好后返回它们的数据。但是,一旦我在组件模板中执行以下操作,就会出现错误...
{{ weekRunDataTime }}
TypeError: state.weekDataList[state.currentWeek] is undefined
计算的属性,然后是 {{ weekRunDataTime }},最终将呈现,但最初仍然显示错误,我该如何解决这个问题?确保 getter 仅在数据可用时运行?
【问题讨论】:
-
什么是
state?通常访问 vuexstore之类的this.$store.state...是语法。 -
嗨@AmreshVenugopal
state在getter 和mutation 在store 里面,所以可以直接引用。 -
抱歉,我在阅读问题时犯了一个大错误。
state.weekDataList的默认值是多少? -
您已经注意到它失败了,因为还没有加载数据。如果没有数据,您可以使用 if else 或三元组来阻止代码执行。
-
我将其添加为记录的答案