React使用jquery方式动态获取数据
好久没写react了,今天有空写一下来react实现实时请求数据,并刷新数据的小demo.
首先我还是选择了jquery方式中自带的ajax获取数据,首先要引用所需的js包

接下来要写一个自定义的js文件,
创建一个react组件:
var Demo = React.createClass({});
//渲染组件
React.render(<Demo url="../data/package.json" setTime="2000" />,document.getElementById('klm'));
我在这里往Demo组件中传人了2个参数一个是url,是为了给ajax请求指定的请求路径,这个setTime是给定时器设置时长参数,写在这为了后期扩展
接下来我们要先定义一个初始化参数:data 用来动态存放数据的
var Demo = React.createClass({
getInitialState:function(){
return {data:[]}
}
});
这步做完之后,接下来我们要写一个单独的ajax方法,去完成获取数据操作。
var Demo = React.createClass({
getAjax:function(){
$.ajax({
url:this.props.url,
dataType:'json',
success:function(data){
this.setState({data:data});
}.bind(this),
error:function(e){
console.log(e.toString());
}.bind(this)
});
},
getInitialState:function(){
return {data:[]}
}
});
上面ajax请求中的url值就是刚才外面传人的url,这步这做完了,接下来我们就是放在什么时候开始执行这个操作,在react的生命周期中,componentDidMount是执行在渲染之后的,意思就是一旦你的组件已经运行了 render 函数,并实际将组件渲染到了 DOM 中,componentDidMount 就会被调用。我就在这步开始做操作:
var Demo = React.createClass({
getAjax:function(){
$.ajax({
url:this.props.url,
dataType:'json',
success:function(data){
this.setState({data:data});
}.bind(this),
error:function(e){
console.log(e.toString());
}.bind(this)
});
},
getInitialState:function(){
return {data:[]}
},
//这个componentDidMount这个生命周期触发在React.render完成页面渲染之后执行
componentDidMount:function(){
this.getAjax();
setInterval(this.getAjax,this.props.setTime)
},
render:function(){
var li = this.state.data.map(function(data){
return (
<li>{data.author} -- {data.text}</li>
)
});
return (
<ul>
{li}
</ul>
)
}
});
//渲染组件
React.render(<Demo url="../data/package.json" setTime="2000" />,document.getElementById('klm'));
在componentDidMount方法中,我先调用this.getAjax(); 已获得页面加载直接获取数据,接着加入了setInterval定时器,开始定时刷新数据,在页面看效果的时候没有传统插入HTML那种刷新的感觉,而是哪里数据变动了哪里就变。。。
这是初始化的获取数据方式,在做单页面场景中,有很多操作,如果牵扯到再执行请求数据,可以在创建的组件中加入新的方法去写ajax。
React使用jquery方式动态获取数据的更多相关文章
- echarts通过ajax动态获取数据的方法
echarts表格的数据一般都需要动态获取,所以总结了一下通过ajax动态获取数据的操作: 插入的方法应该不止一种,我也是接触不久,所以刚学会了一种插入方法: 灵感和经验来自:https://www. ...
- jquery通过ajax获取数据,控制显示的数据条数
效果图: 现在我们可以先看它的json数据,如图所示: 然后可以对应我们的代码进行理解. jquery通过ajax获取数据,并通过窗口大小控制显示的数据条数,以及可以根据 ...
- highcharts动态获取数据生成图表问题
动态获取数据说白点就是从后台传值到前台,前台把这些值赋值给x轴与y轴(这里指的是你X轴与Y轴都是变化的数据,如果你的X轴是固定的,像时间等等的那就另说). 柱状图的动态传值: //获取后台数据 va ...
- react 动态获取数据
如果reander()里面的dom元素是动态获取的,就要将函数放到setSTATE()里面执行
- ECharts 从后台动态获取数据 (asp.net)
(一) 使用工具 visual studio 2017:Web开发:asp.net (代码中的js引用路径以及ajax方法调用的url,记得修改哦) (二) 准备工作(此处写给和我一样小白) 1.动态 ...
- ASP.NET中动态获取数据使用Highcharts图表控件【Copy By Internet】
具体实现的效果如图:
- JS动态获取数据
JS访问数据,有实时获取数据的时候,请加上时间戳 如:'&stampflag=' + Math.round(new Date().getTime() / 1000); 因为有的浏览器(如IE9 ...
- asp.net mvc Areas 母版页动态获取数据进行渲染
经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要 进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢 这里描述 ...
- fullCalendar动态获取数据
fullCalendar http://fullcalendar.io/docs/event_data/events_function $('#calendar').fullCalendar({ he ...
随机推荐
- elasticsearch agg
OK curl -XGET http://21.3.5.121:9200/ipv4geo/service/_count -d '{"query":{"match" ...
- Filter体现职责链模式
1. 前言 Filter—Filter 技术是servlet2.3 新增加的功能.完成的流程:对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后 ...
- 深入理解javascript原型和闭包(16)——完结
之前一共用15篇文章,把javascript的原型和闭包. 首先,javascript本来就“不容易学”.不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学javascript.有其他 ...
- 二叉树的层序遍历 BFS
二叉树的层序遍历,或者说是宽度优先便利,是经常考察的内容. 问题一:层序遍历二叉树并输出,直接输出结果即可,输出格式为一行. #include <iostream> #include &l ...
- 每秒执行一个shell脚本(转载)
上周迁移了一台服务器,发现其中一个项目的数据没有更新,查询原服务器的数据,数据有更新,并找到了rsync服务,从其他服务器传输数据,那么如何找到这台服务器?因为是从远程传输到本地,而且不是很频繁, ...
- 清北学堂模拟赛day7 错排问题
/* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...
- NOSDK--项目历程
nosdk是一个基于cocos2d-x的sdk自动打包及统一接入框架,项目地址:https://github.com/nottvlike/nosdk.git. --更新(2015.07.15) 添加u ...
- 【转】搞不清FastCgi与php-fpm之间是个什么样的关系?
我在网上查fastcgi与php-fpm的关系,查了快一周了,基本看了个遍,真是众说纷纭,没一个权威性的定义. 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议: 有的说,php-f ...
- C和指针 第三章 变量的储存类型 auto、static、register以及static关键词
变量的储存类型决定标量何时创建,何时销毁以及他的值保持多久.有三个地方可以储存变量: 普通内存static 运行时堆栈auto 硬件寄存器register 变量的缺省储存类型取决于它的声明位置: 静态 ...
- ms-dos中 MSCDEX命名语法详解
一.MSCDEX的语法及参数: MSCDEX可以在AUTOEXEC.BAT文件中自动加载,也可以在DOS的命令行中载入但要使用光驱,前提条件是在Config.sys文件中加载了光驱的驱动 ...