Vue.js Vuex问题—将数据转换为观察者

Vue.js Vuex问题—将数据转换为观察者,vue.js,vuex,flux,Vue.js,Vuex,Flux,我正在使用Vuex管理应用程序的状态。当我调度一个从服务器API调用某些数据的操作时,如果该操作发生了变化,我的数据将以某种方式转换为观察者对象,而不是实际数据。这是vuex中的预期行为还是错误 行动: async getDataFromApi(context, payload) { try { let data = callApi(foo); context.commit("SET_REPORTING_DATA", { data, id: payload }) retu

我正在使用Vuex管理应用程序的状态。当我调度一个从服务器API调用某些数据的操作时,如果该操作发生了变化,我的数据将以某种方式转换为观察者对象,而不是实际数据。这是vuex中的预期行为还是错误

行动:

async getDataFromApi(context, payload) {
try {
    let data = callApi(foo);
    context.commit("SET_REPORTING_DATA", { data, id: payload })
    return data;
} catch (e) {
  console.log(e.code);
  console.log(e.message);
  return false;
}}
突变

SET_STATE(state, data) {
state.list = { ...state.list, [data.id]: data.data }
}

奇怪的是,当我记录从API获得的数据时,我得到了一个observer对象,尽管我正在从API返回原始数据

这不是问题,而是浏览器和Vue反应系统之间的警告。要了解更多有关Vue反应性的信息,请查看他们的文档,他们在文档中解释了Vue的工作原理,甚至提到了以下警告:

一个警告是,当记录转换的数据对象时,浏览器控制台对getter/setter的格式不同

他们建议使用更友好的内省界面

但是,有一种方法可以在不必使用vue devtools的情况下查看记录的变量及其数据,方法是使用
console.log(JSON.parse(JSON.stringify(data)))
记录它们,如下所示,以验证是否正确使用浏览器控制台,正如StackOverflow的控制台在没有观察者的情况下已经显示的那样

var-app=新的Vue({
el:“#应用程序”,
数据:()=>({
obj:{
a:123
}
}),
创建(){
console.log('Observer');
console.log(this.obj);
console.log(“数据”);
log(JSON.parse(JSON.stringify(this.obj));
}
});

这是意料之中的,观测者包装器是实现反应性的工具。当且仅当您将数据对象添加到状态时,Vuex才会转换数据对象。