我一直在努力更新
state.describeFields.user
render中出错:TypeError:无法读取“undefined”的属性“user”
state.describeFields[payload.obj] = payload.data;
payload.obj
是“用户”或“帐户”
这是一个菊花链的调用,我认为这是造成问题的原因,但我不够强大的一个开发人员理解所有的含义。到达那里。。。多亏了你们。
-
更新state.integration(works)
-
从indexeddb获取新项目(
retrieveLocalDescribeFields
)对于每个
state.objects
值并将它们保存到state.describeFields by property key(讽刺的是,实际上会将它们保存到state,但随后会出错)
-
如果没有数据从
检索速度描述字段
然后转到远程api来收集数据(在我将所有这些移到vuex之前,代码从未在这里出现,但确实可以工作)
我尝试了将承诺分组,更具体地说,我尝试了console.log on state.describeFields和payload.data在出错的函数中,这两个函数都将预期的数据输出到console。
export default {
state: {
integration: {},
objects: ["user", "account"],
describeFields: { user: [], account: [] }
},
getters: {
getCurrentIntegration(state) {
return state.integration;
},
getCurrentDescribeFields: state => obj => {
return state.describeFields.hasOwnProperty(obj)
? state.describeFields[obj]
: [];
}
},
actions: {
setCurrentIntegration({ commit, dispatch, state }, payload) {
return new Promise(resolve => {
commit("updateCurrentIntegration", payload);
let promises = [];
state.objects.forEach(obj => {
promises.push(dispatch("retrieveLocalDescribeFields", { obj: obj }));
});
resolve(Promise.all(promises));
});
},
setCurrentDescribeFields({ commit }, payload) {
return new Promise(resolve => {
commit("updateCurrentDescribeFields", payload);
resolve(true);
});
},
setClearDescribeFields({ commit }) {
return new Promise(resolve => {
commit("updateClearDescribeFields");
resolve(true);
});
},
retrieveLocalDescribeFields({ commit, dispatch, state, getters }, payload) {
return new Promise(resolve => {
if (theFields.length) {
resolve(
commit("updateCurrentDescribeFields", {
obj: payload.obj,
data: theFields
})
);
} else {
resolve(dispatch("retrieveRemoteDescribeFields", payload));
}
});
},
retrieveRemoteDescribeFields({ commit, state, getters }, payload) {
return new Promise(resolve => {
commit("updateCurrentDescribeFields", {
obj: payload.obj,
data: res.data.records
});
resolve(true);
});
}
},
mutations: {
updateClearDescribeFields(state) {
state.describeFields = { user: [], account: [] };
},
updateCurrentIntegration(state, payload) {
state.integration = payload.data;
},
updateCurrentDescribeFields(state, payload) {
state.describeFields[payload.obj] = payload.data;
}
}
};