赵走x博客
网站访问量:151977
首页
书籍
软件
工具
古诗词
搜索
登录
49、Flux:理念、回顾Whinepad
48、lint、Flow、测试与复验:测试
47、lint、Flow、测试与复验:Flow
46、lint、Flow、测试与复验:ESLint
45、lint、Flow、测试与复验:package.json
44、构建实例应用:<Whinepad>
43、构建实例应用:应用配置
43、构建实例应用:<Excel>:改进的新版本
42、构建实例应用:组件:对话框
41、构建实例应用:组件:Actions
39、构建实例应用:表单:Form
38、构建实例应用:表单:<FormInput>“工厂组件”
37、构建实例应用:表单:Rating组件
36、构建实例应用:表单:Suggest
35、构建实例应用:Button组件
34、构建实例应用:组件
33、构建实例应用:Whinepad v.0.0.1
32、发布
31、开始构建
30、安装必备工具
29、为应用开发做准备:一个模板应用
28、JSX 和表单
27、JSX 和HTML 的区别
26、在JSX 中返回多个节点
25、展开属性
24、HTML 实体
23、JSX入门
22、Excel:一个出色的表格组件:下载表格数据
21、Excel:一个出色的表格组件:即时回放
20、Excel:一个出色的表格组件:搜索
19、Excel:一个出色的表格组件:编辑数据
18、Excel:一个出色的表格组件:排序
17、Excel:一个出色的表格组件
16、 PureRenderMixin
15、 性能优化:避免组件更新
14、 生命周期示例:使用子组件
13、组件生命周期示例:使用mixin
12、组件:生命周期方法
11、中途改变属性
10、从外部访问组件
9、在初始化state 时使用props:一种反模式
8、 props 与state
7、关于DOM 事件的说明
6、组件:带状态的文本框组件
5、组件的state
4、组件的propTypes
3、组件的属性
2、组件的基础
1、Hello World
50、Flux:Store
22、Excel:一个出色的表格组件:下载表格数据
资源编号:76072
书籍
React快速上手开发
热度:80
排序、编辑、搜索功能以后,用户终于能够获得想要的数据了。如果随后可以让用户把处理好的结果下载下来,不就更完美了吗?
排序、编辑、搜索功能以后,用户终于能够获得想要的数据了。如果随后可以让用户把处理好的结果下载下来,不就更完美了吗? 幸运的是,没有什么能难倒React。你只需要取得当前数据this.state.data 并以JSON 或者CSV 格式输出就可以了。 图3-13 显示了当用户点击Export CSV 后,下载一个名为data.csv 的文件(留意浏览器窗口的左下角),然后在Microsoft Excel 中打开这个表格的最终结果。  图3-13:以CSV 格式输出表格数据到Microsoft Excel 首先要在工具栏添加一个新的选项。我们使用HTML5 的特性,在用户点击`
`标签时触发文件下载。因此,这两个新的“按钮”其实只不过是用CSS 修饰的链接而已: ``` _renderToolBar:function(){ return React.DOM.div({className: 'toolbar'}, React.DOM.button( {onClick: this._toggleSearch,className:'toolbar'}, 'search' ), React.DOM.a({onClick:this._download.bind(this,'json'),href:'data.json'},'Export JSON'), React.DOM.a({onClick:this._download.bind(this,'csv'),href:'data.csv'},'Export CSV'), ) }, ``` 现在实现_download() 函数。输出JSON 格式很简单,但输出CSV 格式需要一些额外步骤。从本质上讲,只需要对所有行和每一行中的所有单元格进行循环,并拼接成一个长字符串即可。一旦这项工作完成,函数就会通过download 属性和window.URL 创建的href 二进制blob 来初始化下载功能: ``` _download:function(format,ev){ var contents=format==='json'?JSON.stringify(this.state.data): this.state.data.reduce(function (result, row) { return result+ row.reduce(function (rowresult,cell,idx) { return rowresult+'"'+cell.replace(/"/g,'""')+'"' +(idx