vue.js - Vuex 状态由操作更新,但计算属性没有响应
问题描述
我正在尝试从 firebase 获取一些数据。我有 a store.js
,并导入到main.js
. 所以问题是,加载页面时数据没有正确打印出来。但是,console.log 中的突变显示数据已按应有的方式正确获取。我想问题是,该操作能够获取数据并更新状态,但是,页面是在计算属性更改之前呈现的?我注意到的另一件事是,每当我编辑某些内容并保存在 vscode 中时,内容会突然出现,但如果我刷新页面,它就会消失。我认为这也意味着数据确实被提取了,但只是没有显示出来。想知道是否有人可以提供帮助。真的很感激。
// store.js
mport Vue from 'Vue'
import Vuex from 'vuex'
import globalAxios from 'axios'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
dietRecords: {
breakfest: {},
lunch: {},
dinner: {},
snacks: {}
}
},
mutations: {
setDietRecords (state, data) {
state.dietRecords = data
console.log(state.dietRecords) // this print out correct data
}
},
actions: {
fetchData ({commit, state}) {
globalAxios.get('my_data.json')
.then(res => {
const data = res.data;
const resultArray = {
breakfest: {},
lunch: {},
dinner: {},
snacks: {}
};
for (let key in data) {
resultArray[data[key].meal_type][key] = data[key]
};
commit('setDietRecords', resultArray)
})
}
},
getters: {
dietRecords (state) {
return state.dietRecords
}
}
})
//myapp.vue
import { mapState } from 'vuex';
import axios from 'axios';
import EditRecord from "./editRecord.vue"
export default {
data: function() {
return {
addRecord: {
breakfest: false,
lunch: false,
dinner: false,
snacks: false
}
}
},
computed: {
diet () {
return this.$store.getters.dietRecords
}
},
methods: {
fetchData() {
this.$store.dispatch('fetchDietRecords')
console.log(this.diet)
}
},
created() {
this.$store.dispatch('fetchDietRecords')
}
}
解决方案
虽然已经有一段时间了,但我实际上是自己想出来的。所以原因是我应该从'vue'而不是'Vue'导入Vue。经过大量工作,这是一个很小的错误。希望这可能对其他人有所帮助...首先检查您的包裹名称!
推荐阅读
- python - Jupyter 没有找到“iris”文件
- datagrid - 有没有办法通过单击或获得焦点时编辑 UWP 的 DataGrid XAML 控件中的单元格?
- c# - 异步调用中的异常会扰乱执行
- java - 假装客户端和参数获取
- karate - 空手道:如果包含 __arg 并在“独立”模式下运行,场景将失败
- vb.net - 为什么在 VB.Net 中定义属性时使用 GET & SET 方法?
- opencv - 在 Ubuntu 20.04 上作为服务运行时,Opencv 无法打开摄像头设备
- javascript - 如何在没有浏览器或节点 js 的情况下运行 Javascript?
- c# - 领域如何关闭和阅读
- sql - SELECT 或 JOIN 使用同一列两次