0

我遇到了 Vuex getters 问题,其中 gitters 返回未定义(在 Vue 开发控制台中,Chrome 开发控制台中没有记录错误)。

如果mapGetters()被注释掉(如下面的示例代码),则返回的数据显示在屏幕上 -> 如果用户单击包含数据的链接,则提供。如果用户直接在应显示数据的位置进入应用程序,则不会显示数据。

有一个类似的问题,但没有接受的答案

Vue 控制台日志:

状态:

$_lgdHRS:对象

总小时数: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,
};

突变.js

const
TOTAL_HRS_UPDATED = (state, totHrs) => {
  state.totHrs = +totHrs;
};
export default {
    TOTAL_HRS_UPDATED,
};
4

2 回答 2

0

很可能是因为您刚刚在mounted 中分发了请求,并且在将数据设置到状态变量之前,您的组件就会显示出来。因此,您可以尝试在挂载和存储操作中使用异步等待。请参考以下链接并检查最后一个示例。 https://vuex.vuejs.org/guide/actions.html

于 2019-01-31T05:18:14.143 回答
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

我不知道为什么,但您的意见将不胜感激。

于 2019-01-31T18:49:50.850 回答