这里是 React/Redux n00b :) - 使用一个蹩脚的 API,它不能正确返回错误代码(即使端点关闭也返回 200),因此搞乱了我的 Ajax 调用。 API 所有者无法尽快纠正此问题,因此我现在必须解决这个问题。
我目前正在使用类似这样的内容检查每个成功
(使用lodash):
success: function(data) {
// check if error is REALLY an error
if (_.isUndefined(data.error) || _.isNull(data.error)) {
if (data.id) data.sessionId = data.id;
if (data.alias) data.alias = data.alias;
resolve(data || {});
} else {
reject(data); // this is an error
}
}
我想将它移到它自己的函数中,以便我可以将它与执行 Ajax 调用的任何操作一起使用,但我不确定在哪里包含它。
这种类型的函数应该映射到状态(因此,将其视为一个操作并构建一个 reducer ),还是应该是 Redux 之外的通用函数并放入 main.js
中?
最佳答案
您可以根据 promise 是否得到解决来分派(dispatch)不同的操作。最简单的方法是这样的:
function onSuccess(data) {
return {
type: "FETCH_THING_SUCCESS",
thing: data
};
}
function onError(error) {
return {
type: "FETCH_THING_ERROR",
error: error
};
}
function fetchThing(dispatch, id) {
// the ajax call that returns the promise
fetcher(id)
.then(function(data){
dispatch(onSuccess(data));
})
.catch(function(error) {
dispatch(onError(error));
});
}
这里还有更多documentation怎么做这种事...
关于javascript - 在哪里放置不映射到状态的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34597987/