用React处理ajax

时间:2015-05-01 16:21:15

标签: jquery ajax backbone.js reactjs

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

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

4 个答案:

答案 0 :(得分:42)

为了防止任何人偶然发现并且不知道,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)
    });
  },

答案 1 :(得分:17)

请在https://github.com/facebook/react/wiki/Complementary-Tools

查看关于HH:MM:SS的Facebook官方文档

他们只是推荐几个数据提取API,如

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

我个人最喜欢的是Complementary Tools,因为承诺可以在浏览器和nodejs env中使用,甚至正式反应JS网站建议 AJAX and APIs

答案 2 :(得分:13)

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

fetch('/api/getSomething').then(function() {...})

答案 3 :(得分:1)

我绝对允许你使用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);
})();