我正在使用带有 axios 的 Vuex 从我的后端获取数据。但不知何故,我的 Vue 单文件组件(SFC)中的状态属性userName
没有更新。
approot.js 状态
const state = {
userName: 'foo'
};
吸气剂
const getters = {
getUserName: (state) => state.userName
};
单个文件组件
<template>
<div id="navbar">
//cut for brievity
<span>{{getUserName}}</span>
</template>
<script>
import {mapGetters} from 'vuex'
export default {
name: 'navbar',
computed: mapGetters(['getNumberOfJobMessages','getUserName']),
//cut for brievity
}
</script>
<style scoped>
//cut for brievity
</style>
使用 axios 从后端获取数据的操作
const actions = {
async fetchMenuData({ commit }) {
//fetch data from api controller
const response = await axios.get('../api/Menu/GetMenu');
console.log(response.data.userName); //not undefined
commit('setMenuData', response.data);
}
}
突变设置状态变量
const mutations = {
setMenuData(state, menuData) {
console.log(menuData.userName); //not undefined
state.userName = menuData.userName;
console.log(state.userName); //not undefined
}
}
问题 当我的单个文件组件调用 getUserName 时,它总是呈现“foo”,即硬编码值。我对此感到非常困惑,因为我的其余状态变量设置为相同的模式,并且我的组件在获取它们时没有问题。
任何知道出了什么问题或可以在我的代码中看到缺陷的人?将不胜感激。