我试图使用transformRequest和transformResponse以便在渲染数据时显示加载程序。完成此操作后,它可以正常运行,但是现在看来我的POST和PATCH请求没有得到正确处理。控制台上没有错误消息,但是当我尝试修改某些实体(并发送PATCH请求)时,没有任何反应。删除transformRequest函数时,可以发送POST和PATCH。
有人可以解释我做错了吗?
更新!这是我在http / index.js中添加的内容:
...
transformRequest(data) {
console.log(data); // returns undefined
store.dispatch('loadingData');
console.log(data) // returns undefined
return console.log(JSON.stringify(data)); // returns undefined
},
transformResponse(data) {
store.dispatch('finishLoadingData');
const parsedData = JSON.parse(data);
if (parsedData.error === 'Access denied') {
cookies.remove('access_token');
window.location = `${config.mainSite}/login`;
}
return parsedData;
},
...
这是商店:
export default {
state: {
loading: false,
},
actions: {
loadingData({ commit }) {
commit('LOADING_DATA');
},
finishLoadingData({ commit }) {
commit('FINISH_LOADING_DATA');
},
},
mutations: {
LOADING_DATA(state) {
state.loading = true;
},
FINISH_LOADING_DATA(state) {
state.loading = false;
},
},
getters: {
getLoading(state) {
return state.loading;
},
},
};
答案 0 :(得分:0)
当我们使用Axios,transformRequest
和transformResponse
时,它接受的是函数数组,而不是单个函数。你可以尝试一下吗?
...
transformRequest: [(data) => {
store.dispatch('loadingData');
return data;
}],
transformResponse: [(data) => {
store.dispatch('finishLoadingData');
const parsedData = JSON.parse(data);
if (parsedData.error === 'Access denied') {
cookies.remove('access_token');
window.location = `${config.mainSite}/login`;
}
return parsedData;
}],
...