嗨我是新手与反应,并且在ajax发布请求后更新应用程序状态有问题。 例如我的状态看起来像这样:React - 在ajax发布请求后更新状态的方法
state: {
persons: []
}
然后我想新的人加入到状态,所以我取请求serwer,并有一个问题。 我应该从服务器更新集合返回设置新状态,还是应该返回响应并在请求回调中强制新请求到服务器以获取数据? 或者是否有其他选择,如监听器与任何响应状态ok后更新状态?
嗨我是新手与反应,并且在ajax发布请求后更新应用程序状态有问题。 例如我的状态看起来像这样:React - 在ajax发布请求后更新状态的方法
state: {
persons: []
}
然后我想新的人加入到状态,所以我取请求serwer,并有一个问题。 我应该从服务器更新集合返回设置新状态,还是应该返回响应并在请求回调中强制新请求到服务器以获取数据? 或者是否有其他选择,如监听器与任何响应状态ok后更新状态?
我认为这取决于两件事情对我来说:
如果1.的答案为YES,那么您需要从POST和更新状态的响应中获取数据。
如果1.的答案为NO,但对2.的答案为YES,则只需触发另一个ajax请求。
如果两者的答案都是NO,那么我会选择在代码中看起来更干净的任何一个。
另一个想法,但你需要每隔一段时间轮询一次列表吗?在这种情况下,您应该使用您已用于轮询的相同方法。
你可以直接setState
内的ajax调用的成功函数。
var self = this;
$.ajax({
type: 'GET',
url: "http://localhost:9000/abc",
dataType: 'json',
success: function(data) {
self.setState({persons: data});
},
error: function(jqXHR,textStatus,errorThrown) {
console.log(textStatus);
}
});
我在整个项目中一直遵循这种方法,它的功能就像一个魅力。
您的Redux动作创建者将从服务器获取数据。您可能会从提取库(Axios,同构提取,...)获得承诺。
然后您必须使用商店中间件来处理异步操作:您可以使用Redux-Promise或Redux-Thunk来捕获Promise或调度函数而不是纯字符串操作。中间件允许您在获得可用数据(或发生错误)时分派普通操作。
当您的数据可用并且您的操作由中间件调用时,您的Reducer将创建新状态,并从操作负载中获取人员数组。
我建议你阅读终极版文档的这一部分: http://redux.js.org/docs/advanced/AsyncActions.html
异步操作和中间件是终极版的艰难部分之一,但是当你了解中间件的作品,它是不是真的复杂,你只需花一些时间阅读Redux文档。
有一个愉快的一天, 利玛窦
为什么绑定'this'当使用'self'? – Tikkes
另外,你使用'let',那么为什么不使用箭头函数呢? –
@NeilTwist如何使用箭头功能 –