我遇到了Vuex吸气剂问题,其中的臭虫返回的状态未定义(在Vue开发控制台中,Chrome开发者控制台中未记录任何错误)。
如果将mapGetters()
注释掉(如下面的示例代码),则返回的数据将显示在屏幕上->如果用户单击包含数据的链接,则提供此信息。如果用户在应显示数据的位置直接进入应用程序,则不会显示数据。
有一个similar question,但没有被接受的答案
Vue控制台日志:
状态:
$ _ lgdHRS:Object
总小时数:129
获取者:
$ _ lgdHRS / totHrs:未定义
SomeContainer.vue
<script>
import store from '../../_store'
import { mapState, mapGetters } from 'vuex'
export default {
computed: {
...mapState('$_lgdHRS',{
totHrs : 'totHrs',
}),
// ...mapGetters('$_lgdHRS',{
// totHrs : 'totHrs',
// airHrs : 'airHrs',
// picHrs : 'picHrs',
// pmcHrs : 'pmcHrs',
// voHrs : 'voHrs',
// trngHrs : 'trngHrs'
// }),
},
created() {
this.storeKey = '$_lgdHRS';
if (!(this.storeKey in this.$store._modules.root._children)) {
this.$store.registerModule(this.storeKey, store);
}
},
mounted() {
this.$store.dispatch('$_lgdHRS/getLogSummary');
},
}
</script>
<template>
<total-summary :hours="totHrs" />
</template>
state.js
export const state = {
totHrs: Number,
}
getters.js
const totHrs = state => state.totHrs;
export default {
totHrs,
};
mutations.js
const
TOTAL_HRS_UPDATED = (state, totHrs) => {
state.totHrs = +totHrs;
};
export default {
TOTAL_HRS_UPDATED,
};
答案 0 :(得分:0)
最可能的原因是您刚刚将请求分散在已挂载的状态,并且在将数据设置为状态变量之前,将显示组件。 因此,您可以尝试在挂载以及存储操作中使用异步等待。 请参考以下链接,并检查其中的最后一个示例。 https://vuex.vuejs.org/guide/actions.html
答案 1 :(得分:0)
问题是我像在其他框架中一样嵌套变量。
示例:
// NESTED VARS
const r = response
totHrs = r.total,
airHrs = r.airborne,
picHrs = r.PIC,
pmcHrs = r.PMC,
voHrs = r.VO,
trngHrs = r.training;
// CHANGE TO:
const r = response
const totHrs = r.total
const airHrs = r.airborne
const picHrs = r.PIC
const pmcHrs = r.PMC
const voHrs = r.VO
const trngHrs = r.training
我不知道为什么,但是您的意见将在评论中得到极大的赞赏。