Jquery 使用react从服务器获取数据并更新组件';s州

Jquery 使用react从服务器获取数据并更新组件';s州,jquery,node.js,reactjs,Jquery,Node.js,Reactjs,我希望每5秒钟从服务器上获取一个随机数,我已经使用jquery/ajax完成了这项工作 我对使用react执行此操作需要采取的步骤有点困惑,这是我的原始脚本: <script type="text/javascript"> fetchData(); $(document).ready(function() { setInterval(fetchData, 5000); }); function fetchData(){ $.ajax({

我希望每5秒钟从服务器上获取一个随机数,我已经使用jquery/ajax完成了这项工作

我对使用react执行此操作需要采取的步骤有点困惑,这是我的原始脚本:

  <script type="text/javascript">
  fetchData();
  $(document).ready(function() {
      setInterval(fetchData, 5000);
  });
  function fetchData(){
      $.ajax({
          url: "/realtime/show",
          type: "GET",
          contentType: 'application/json',
          success: function(result) {
              $("#result").html(result.data);
          }
      });

  }

fetchData();
$(文档).ready(函数(){
setInterval(fetchData,5000);
});
函数fetchData(){
$.ajax({
url:“/realtime/show”,
键入:“获取”,
contentType:'应用程序/json',
成功:功能(结果){
$(“#result”).html(result.data);
}
});
}

在组件的
componentDidMount
调用中,您可以设置间隔,并向其传递一个函数,该函数将进行AJAX调用。然后,在AJAX调用的回调中,您可以以某种方式设置组件状态(注意
这个
)。然后,在渲染方法中,只需根据需要使用状态。当组件卸载时,请确保清除您的间隔,这样它就不会继续运行。以下是一个简单的例子:

var AjaxCall = React.createClass({
    intervalId: null,
    request: null,
    getInitialState: function() {
        return {
            data: null
        };
    },

    componentDidMount: function() {
        this.intervalId = setInterval(this.fetchData, 5000);
    },

    componentWillUnmount: function() {
       if (this.intervalId) {
           clearInterval(this.intervalId)
           this.intervalId = null;
       }

       if (this.request) {
           this.request.abort();
           this.request = null;
       }
    },

    fetchData: function() {
        this.request = $.ajax({
            url: "/realtime/show",
            type: "GET",
            contentType: 'application/json',
            success: function(result) {
                var d = // process results
                this.setState({ data: d });
            }.bind(this)
        });
    },

    render: function() {
        // use this.state.data here however you need ot
        if (!this.state.data) {
            return <div>No data</div>
        }

        return <div>{this.state.data}</div>;
    }
});

ReactDOM.render(
  <AjaxCall />,
  document.getElementById('container')
);
var AjaxCall=React.createClass({
有效期:null,
请求:null,
getInitialState:函数(){
返回{
数据:空
};
},
componentDidMount:function(){
this.intervalId=setInterval(this.fetchData,5000);
},
componentWillUnmount:function(){
如果(本条有效){
clearInterval(this.intervalId)
this.intervalId=null;
}
如果(本请求){
this.request.abort();
this.request=null;
}
},
fetchData:function(){
this.request=$.ajax({
url:“/realtime/show”,
键入:“获取”,
contentType:'应用程序/json',
成功:功能(结果){
var d=//进程结果
this.setState({data:d});
}.绑定(此)
});
},
render:function(){
//在此处使用this.state.data,但需要ot
如果(!this.state.data){
不返回任何数据
}
返回{this.state.data};
}
});
ReactDOM.render(

在组件的
componentDidMount
调用中,您可以设置间隔,并向其传递一个函数,该函数将进行AJAX调用。然后在AJAX调用的回调中,您可以以某种方式设置组件状态(注意
)。然后,您只需使用需要的状态即可使用渲染方法。请确保在组件卸载时清除间隔,使其不会继续运行。以下是一个简单的示例:

var AjaxCall = React.createClass({
    intervalId: null,
    request: null,
    getInitialState: function() {
        return {
            data: null
        };
    },

    componentDidMount: function() {
        this.intervalId = setInterval(this.fetchData, 5000);
    },

    componentWillUnmount: function() {
       if (this.intervalId) {
           clearInterval(this.intervalId)
           this.intervalId = null;
       }

       if (this.request) {
           this.request.abort();
           this.request = null;
       }
    },

    fetchData: function() {
        this.request = $.ajax({
            url: "/realtime/show",
            type: "GET",
            contentType: 'application/json',
            success: function(result) {
                var d = // process results
                this.setState({ data: d });
            }.bind(this)
        });
    },

    render: function() {
        // use this.state.data here however you need ot
        if (!this.state.data) {
            return <div>No data</div>
        }

        return <div>{this.state.data}</div>;
    }
});

ReactDOM.render(
  <AjaxCall />,
  document.getElementById('container')
);
var AjaxCall=React.createClass({
有效期:null,
请求:null,
getInitialState:函数(){
返回{
数据:空
};
},
componentDidMount:function(){
this.intervalId=setInterval(this.fetchData,5000);
},
componentWillUnmount:function(){
如果(本条有效){
clearInterval(this.intervalId)
this.intervalId=null;
}
如果(本请求){
this.request.abort();
this.request=null;
}
},
fetchData:function(){
this.request=$.ajax({
url:“/realtime/show”,
键入:“获取”,
contentType:'应用程序/json',
成功:功能(结果){
var d=//进程结果
this.setState({data:d});
}.绑定(此)
});
},
render:function(){
//在此处使用this.state.data,但需要ot
如果(!this.state.data){
不返回任何数据
}
返回{this.state.data};
}
});
ReactDOM.render(