gpt4 book ai didi

javascript - 在哪里放置不映射到状态的函数?

转载 作者:行者123 更新时间:2023-11-29 21:37:06 24 4
gpt4 key购买 nike

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 调用的任何操作,但我不确定将它包含在何处。

这种类型的函数应该映射到状态(因此,将其视为一个 Action 并构建一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com