我喜欢创建一个额外的文件来处理我的 API 调用,将所有 xhttp 调用放在你的商店中会很快使事情变得混乱。我通常用我的商店命名它,所以在这种情况下类似于“contacts-api.js”。在 api 文件中,我使用我需要的所有 api 方法导出一个对象。例如对 xhttp 请求使用 superagent:
module.exports = {
createNewContact: function(data, callback) {
request
.post('/url')
.send(data)
.end(function(res, err) {
if (callback && typeof callback === 'function') {
callback(res, err);
}
});
}
}
我通常最终为每个请求创建 3 个操作。第一个是用数据触发初始请求,下一个是结果成功,最后一个是错误。
您的每个操作的存储方法最终可能看起来像这样:
onCreateNewContactRequest: function(data) {
api.createNewContact(data, function(res, err) {
if (err) {
ContactsActions.createNewContactError(err);
} else {
ContactsActions.createNewContactSuccess(res);
}
});
},
onCreateNewContactSuccess: function(res) {
// save data to store
this.newContact = res;
},
onCreateNewContactError: function(err) {
// save error to store
this.error = err;
}