Jquery 使用React处理ajax
在相当传统的web应用程序中,我应该如何处理ajax请求?特别是使用React for View,同时拥有一个处理文本等数据的后端,但使用ajax自动保存用户交互,如切换选项或向服务器发送帖子Jquery 使用React处理ajax,jquery,ajax,backbone.js,reactjs,Jquery,Ajax,Backbone.js,Reactjs,在相当传统的web应用程序中,我应该如何处理ajax请求?特别是使用React for View,同时拥有一个处理文本等数据的后端,但使用ajax自动保存用户交互,如切换选项或向服务器发送帖子 我应该使用jQuery来实现这一点,还是像主干这样的东西更有益?万一有人无意中发现了这一点并且不知道,jQuery使发送AJAX调用变得非常容易。因为React只是JavaScript,所以它的工作方式与任何其他jQueryAjax调用一样 React自己的文档使用jQuery进行AJAX调用,因此我认为
我应该使用jQuery来实现这一点,还是像主干这样的东西更有益?万一有人无意中发现了这一点并且不知道,jQuery使发送AJAX调用变得非常容易。因为React只是JavaScript,所以它的工作方式与任何其他jQueryAjax调用一样 React自己的文档使用jQuery进行AJAX调用,因此我认为这对于大多数目的来说已经足够好了,无论是使用哪个堆栈
componentDidMount: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
我不会使用JQuery,因为AJAX调用实际上没有那么复杂,JQuery是一个相当大的依赖项。请参阅vanillajs关于在没有库的情况下进行AJAX调用的说明:您可以使用JavaScript获取API,它还支持GET和POST,并且具有构建承诺
fetch('/api/getSomething').then(function() {...})
请查看Facebook关于
补充工具的官方文档,网址为
他们只是建议很少使用像API这样的数据获取API
- :浏览器和node.js基于Promise的HTTP客户端
- :无需介绍
- :用于AJAX请求的轻量级“同构”库
- :再次使用AJAX。包括对xmlHttpRequest、JSONP、CORS和CommonJS的支持。浏览器支持可以追溯到IE6
我个人最喜欢的是axios
,因为它可以在浏览器和nodejs env中运行,甚至官方的js网站也推荐同样的我绝对建议您使用获取API
。它很容易理解,支持所有方法,您可以使用async/await
而不是promise/then
和callback hell
例如:
fetch(`https://httpbin.org/get`,{
method: `GET`,
headers: {
'authorization': 'BaseAuth W1lcmxsa='
}
}).then((res)=>{
if(res.ok) {
return res.json();
}
}).then((res)=>{
console.log(res); // It is like final answer of XHR or jQuery Ajax
})
以更好的方式或异步/等待方式:
(async function fetchAsync () {
let data = await (await fetch(`https://httpbin.org/get`,{
method: `GET`,
headers: {
'authorization': 'BaseAuth W1lcmxsa='
}
})).json();
console.log(data);
})();
看看flux,看看人们是如何处理AJAX的:您可以使用任何一种。这取决于你。如果您已经准备好了一些主干内容,您可以继续使用它。我使用jQuery使AJAX调用与Django后端一起使用React。不过,对于AJAX包装器来说,这是一个巨大的库。他们下载的2.x的压缩版本是82KB。这对于一个包装器来说太多了,它可以用足够少的代码行来编写,以适应屏幕。是的,你说得对,但是除了Ajax调用之外,我还有很多东西要用jQuery。用React下载它很痛苦,但是jQuery对我来说仍然太有帮助了,我无法完全摆脱它。关于jQuery的巨大性:备选方案包括superagent和reqwest。两者都有非常相似的API,但相比之下superagent只有10kB。您只需添加jQuery的ajax部分即可:I Get$未定义如何处理取消正在进行的请求?目前,这对于react-native来说不是一个好选项:当然,您可以将fetch与react-native一起使用(I-do)。您提供的链接显示了浏览器兼容性。反应不是一个浏览器(混合)技术,所以你可以只包括通过NPM获取。对于任何想在你的前端使用FETCH的人,请考虑没有IE支持,除非你使用某种类型的PultPube,即使如此,仅限于IE 10 +。如果你正在使用这些天的反应,你很可能(应该是)。无论如何,使用Babel以便获取是可以的。不建议使用jQuery
,我更喜欢使用fetch
。确实如此“fetch”是现在使用react ajax
执行HTTP请求的goto解决方案吗?这太荒谬了,我找不到它,我更喜欢使用fetch
和async/await
来更好地理解和流畅地编码。