Jquery 使用react从服务器获取数据并更新组件';s州
我希望每5秒钟从服务器上获取一个随机数,我已经使用jquery/ajax完成了这项工作 我对使用react执行此操作需要采取的步骤有点困惑,这是我的原始脚本: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({
<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(