使用 React 处理 ajax

IT技术 jquery ajax backbone.js reactjs
2021-04-22 08:42:35

我应该如何在相当传统的 Web 应用程序中处理 ajax 请求?特别是使用 React 进行视图,同时具有处理文本等数据的后端,但使用 ajax 自动保存用户交互,例如切换选项或喜欢帖子到服务器。

我应该为此使用jQuery,还是像Backbone这样的东西更有益?

5个回答

以防万一有人偶然发现并且不知道,jQuery 使发送 AJAX 调用变得非常容易。由于 React 只是 JavaScript,它会像任何其他 jQuery AJAX 调用一样工作。

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 部分:stackoverflow.com/questions/4132163/...
2021-05-26 08:42:35
不过,它是一个巨大的库,仅用于 AJAX 包装器。他们提供下载的 2.x 压缩版本是 82 KB。对于一个可能可以用足够少的代码行编写以适应屏幕的包装器来说,这是很多的。
2021-06-05 08:42:35
我得到 $ 未定义
2021-06-07 08:42:35
关于 jquery 巨大的话题:替代方案包括 superagent 和 reqwest。两者都有非常相似的 API,但相比之下 superagent 只有 10kB。
2021-06-15 08:42:35
是的,你是对的,但除了 Ajax 调用之外,我仍然使用 jQuery。用 React 下载它很痛苦,但 jQuery 对我来说仍然太有用了,无法完全摆脱它。
2021-06-20 08:42:35

Complementary Toolshttps://github.com/facebook/react/wiki/Complementary-Tools查看 Facebook 的官方文档

他们只是推荐一些数据获取 API 之类的

  • axios用于浏览器和 node.js 的基于 Promise 的 HTTP 客户端。
  • jQuery AJAX无需介绍。
  • superagent用于 AJAX 请求的轻量级“同构”库。
  • reqwest : AJAX 重来一遍。包括对 xmlHttpRequest、JSONP、CORS 和 CommonJS Promises 的支持 A. 浏览器支持可追溯到 IE6。

我个人最喜欢的axios原因是 promises 可以在浏览器和 nodejs 环境中使用,甚至官方 reactJS 网站在AJAX 和 API上也推荐相同的

使用react-ajax是荒谬的,我找不到它,我更喜欢使用fetch和使用async/await更好的理解和流畅的编码。
2021-06-12 08:42:35

你可以使用 JavaScript Fetch API,它也支持 GET 和 POST,而且它有构建 Promises。

fetch('/api/getSomething').then(function() {...})
如果你最近在使用 React,你可能(应该)无论如何都在使用 Babel,所以 fetch 很好。
2021-06-03 08:42:35
当然,您可以将 fetch 与 React Native 一起使用(我愿意)您提供的链接显示了浏览器兼容性。React 不是浏览器(混合)技术,因此您可以通过 npm 包含 fetch。
2021-06-04 08:42:35
您如何处理取消飞行中的请求?
2021-06-10 08:42:35
对于考虑在前端使用 fetch 的任何人,请考虑没有 IE 支持,除非您使用某种polyfillgithub.com/github/fetch,即使这样也仅限于 IE 10+
2021-06-15 08:42:35
目前这不是本机反应的好选择:caniuse.com/#feat=fetch
2021-06-16 08:42:35

我不会使用 JQuery,因为 AJAX 调用实际上并没有那么复杂,而且 JQuery 是一个非常大的依赖项。请参阅 vanillajs 关于在没有库的情况下进行 AJAX 调用的说明:http ://vanilla-js.com/

jQuery不建议使用,我更喜欢使用fetch.
2021-05-25 08:42:35
的确。'fetch' 是如今处理 HTTP 请求的 goto 解决方案👍
2021-06-14 08:42:35

我绝对建议您使用Fetch API. 非常容易理解,支持所有方法,可以使用async/await代替promise/then和回调地狱。

例如:

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/await方式:

(async function fetchAsync () {
    let data = await (await fetch(`https://httpbin.org/get`,{
                                method: `GET`,
                                headers: {
                                    'authorization': 'BaseAuth W1lcmxsa='
                                }
                            })).json();
                      console.log(data);
})();