这是我真正意义上地用react实现一些东西。这次分享的是一个很简单的小组件,效果图先放上来:

  

  

  前端样式用的是一套框架。功能很简单,就是根据选择的维度,在成员里选择对应这个维度的选项。

  

  首先初始化一些数据,这里我们要关注的就是newMeasureText,这是维度的value;newMeasureMember,这是维度的text。headerMsg是一个数组,作用是用来存放选择的维度和成员,所以肯定是一个二维数组。newLists是一个数组,作用是用来存放对应多维度的index的option选项(所以这里面的数据肯定是一个二维数组,包括select的index和option的内容,格式上应该是[[{'value': 'RMB', 'name': 'RMB'}, {'value': 'USD', 'name': 'USD'}],[{'value': 'RMB', 'name': 'RMB'}, {'value': 'USD', 'name': 'USD'}]]这样的)。optionList是一个对象,存放的是维度和对应该维度的成员,optionList实际应该从store中传过来,这里为了演示,直接把对象内容写在初始化里了。

  this.fnAddMeasure = this.onAddMeasure.bind(this);this.fnRemoveMeausre = this.onRemoveMeasure.bind(this);这2条是绑定添加维度和删除维度的按钮的,增加和删除的功能。

  增加和删除功能非常简单,就是控制数组的长度,增加的时候push一条记录进去,删除的时候pop最后一条记录。

  

  render内容如下:

  

  很明显的需要2次map,第一次是需要遍历headerMsg,来渲染已经保存的多个select,第二次是需要遍历newLists,来渲染对应某个select的option选项。它们之间依靠idx(index)来联系。这里我还踩了一个坑,之前我是把listSection这个对象的遍历放到signedDataSection对象外部的。然后发现react渲染的时候是先渲染成员select里的listSction对象(只会渲染一次),然后再渲染signedDataSection对象(会遍历多次),也就是说是完全分开渲染的,后果就是成员select里的值永远是newLists里最后一个值,也就是所有的成员option都是一样的。所以这listSction对象一定要放到signedDataSection对象里,这样每次渲染他们是同步的,先渲染一个成员select,再渲染一个维度select,依次循环下去。

  最后,当选择的值放生改变触发的函数如下:

  

  change函数里要做就是当你改变值的时候更新headerMsg数组和newLists数组里对应idx的headerMsg[idx]和newLists[idx]值。

  到这里这个小组件就完成了。第一次写react,是边搜索边猜想边思考边调试,当然最终要的是,其实整个大的逻辑已经被某个大大写好了,加上我碰到问题的时候,大大每次都给了我非常多的提示和指点,按照大大的指点,我要做的就是完成这一小部分的功能和逻辑,还是要感慨一下有人指点,对于新知识掌握起来就是快啊。

  

  

利用React实现表头维度功能的更多相关文章

  1. React Native移动框架功能研究

    React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...

  2. 利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理完成后的 React 组件.React 高阶组件在 React 生态中使用的非常频繁, ...

  3. 利用其它带文件防护功能的软件防止*.asp;*.jpg写入文件。

    此木马是一个.NET程序制作,如果你的服务器支持.NET那就要注意了,,进入木马有个功能叫:IIS Spy,点击以后可以看到所有站点所在的物理路径.以前有很多人提出过,但一直没有人给解决的答案.. 防 ...

  4. [置顶] LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 declare @sql varchar(4000), @dirpath varch ...

  5. [PHP]利用MetaWeblog API实现XMLRPC功能

    [PHP]利用MetaWeblog API实现XMLRPC功能 | OWNSELF [PHP]利用MetaWeblog API实现XMLRPC功能 Windows Live Writer是一款小巧的写 ...

  6. 利用React/anu编写一个弹出层

    本文将一步步介绍如何使用React或anu创建 一个弹出层. React时代,代码都是要经过编译的,我们很多时间都耗在babel与webpack上.因此本文也介绍如何玩webpack与babel. 我 ...

  7. 利用React Native 从0到1 开发一款兼容IOS和android的APP(仿造京东)

    最近有一部电视剧叫做<微微一笑很傻逼>里面有个男猪脚,人们都叫他大神~我觉得吧~大神是相对的~所以~啥事都得谦虚! 好了 今天介绍的是如何从0到1利用React Native开发一款兼容I ...

  8. java翻译到mono C#实现系列(4) 利用CountDownTimer类实现倒计时功能 mono版

    群里的朋友问利用CountDownTimer类实现倒计时功能怎么实现,我就百度了,参考http://blog.csdn.net/qq344429461/article/details/7521361写 ...

  9. C#下利用正则表达式实现字符串搜索功能的方法(转)

    关键字:正则表达式.元字符.字符串.匹配: 1.正则表达式简介:正则表达式提供了功能强大.灵活而又高效的方法来处:.NET框架正则表达式并入了其他正则表达式实现的: 2.字符串搜索:正则表达式语言由两 ...

随机推荐

  1. APP常用字体

    font-family:Microsoft YaHei,Helvitica,Verdana,Tohoma,Arial,san-serif;

  2. 【荐】MongoDB基本命令大全

    DB Shell数据操作 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. #数据库 操作 1.Help查看命令提示 > h ...

  3. mrjob 使用 mongodb 作为数据源

    When using a mongoDB collection as input, add the arguments -jobconf mongo.input.uri=<input mongo ...

  4. install alilang

    $sudo dpkg -i alilang.deb $ sudo alilang

  5. Android手机截屏方法

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <u ...

  6. JavaScript方法——call和apply

    1.相同点: a) 产生的效果或作用完全相同: b) 至少有一个参数: c) 第一个参数必须有且是一个对象(Object),因为就是这个家伙偷懒. 2.不同点: 传递参数的方式. 前提: 1.有两个对 ...

  7. Android错误

    1. [2016-09-16 14:25:45 - X_Card] Found 2 versions of android-support-v4.jar in the dependency list, ...

  8. iOS开发UI篇—CAlayer层的属性

    iOS开发UI篇—CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...

  9. 如何破解mac版UltraEdit?

    Rodolfo教你如何破解UtralEdit? 第一步:去官网下载原载,先运行一次: 第二步:在终端里执行下面代码就可以破解完成!printf '\x31\xC0\xFF\xC0\xC3\x90' | ...

  10. ASP.NET MVC cs类中根据Controller和Action生成URL

    var Url = new UrlHelper(HttpContext.Current.Request.RequestContext); Url.Action("AnnounceDetail ...