用ReactJs写一个简单的手风琴菜单效果
来源:互联网 发布:耳机对耳朵的伤害 知乎 编辑:程序博客网 时间:2024/05/02 00:02
ReactJs除了利用Virtual DOM大大提高了页面渲染速度。
本身基于组件的编码方式也很优雅,组件层次结构比较清晰,挺易于维护的。
下面用ReactJs写一个简单的手风琴菜单效果,仅供学习交流。
完整源码如下:
<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <title></title> <script src="https://npmcdn.com/react@15.3.1/dist/react.js"></script> <script src="https://npmcdn.com/react-dom@15.3.1/dist/react-dom.js"></script> <script src="https://npmcdn.com/babel-core@5.8.38/browser.min.js"></script> <style type="text/css"> .hidden{ display:none; } </style> </head> <body> <div id="myComponent"></div> <script type="text/babel"> //菜单数据 var menuDatas = [ {id:"010", label:"ANIMAL", children:[ {id:"011", label:"dog"}, {id:"012", label:"cat"}, {id:"013", label:"bird"} ]}, {id:"020", label:"TRAFFIC", children:[ {id:"021", label:"car"}, {id:"022", label:"bus"}, {id:"023", label:"plane"} ]}, {id:"030", label:"MOBILE", children:[ {id:"031", label:"ipone"}, {id:"032", label:"smartisan"} ]} ]; //菜单React组件 var ReactMenus = React.createClass({ getInitialState : function(){ return {expandId : -1}; }, clickHandler : function(menuDataId){ this.setState({ expandId: menuDataId}); }, render :function(){ //保持当前组件对象,方便在循环内部使用 var crtCmp = this; //遍历获取菜单数据,生成Virtual DOM对象 var menusDataDom = this.props.menuDatas.map(function(crtMenuData){ //遍历子菜单数据,生成Virtual DOM对象-->当前组件被点击,才展示子菜单数据 var liData = null; if(crtMenuData.children){ liData = crtMenuData.children.map(function(currentLiData){ return ( <li key={currentLiData.id} className={crtMenuData.id==crtCmp.state.expandId?"":"hidden"}> {currentLiData.label} </li> ) }); liData = <ul>{liData}</ul> } //将完整Virtual DOM返回 return ( <div key={crtMenuData.id}> <div onClick={crtCmp.clickHandler.bind(crtCmp,crtMenuData.id)}>{crtMenuData.label}</div> {liData?liData:""} </div> ); }) return ( <div>{menusDataDom}</div> ) } }); //渲染到DOM ReactDOM.render(<ReactMenus menuDatas={menuDatas} /> , document.getElementById("myComponent")); </script> </body></html>
0 0
- 用ReactJs写一个简单的手风琴菜单效果
- 用js写的一个手风琴效果
- 一个简单的手风琴效果
- 纯css写的一个手风琴效果
- 一起来写一个简易的手风琴效果
- 一个最简单的jQuery手风琴效果
- 下拉菜单的手风琴效果
- 用css和jquery写一个手风琴式的下拉菜单
- 超级简单的手风琴效果
- 使用jQuery创建简单的手风琴菜单
- 使用jQuery创建简单的手风琴菜单
- JQuery基础练习:简单的手风琴效果
- 简单的手风琴JS效果实现
- 一个手风琴效果的jquery动画
- jquery简单手风琴效果
- 原生js实现手风琴菜单效果 与 css3的过渡实现手风琴效果
- 用原生js写一个手风琴
- 用JavaScript写一个简单的二级联动菜单
- Databricks Spark Cloud
- 基于遗传算法优化的神经网络算法
- Java.util.Date 及其子类java.sql.date相关类的转换
- Html 标签简单总结
- PAT 1037. Magic Coupon (25)(俩端乘法)
- 用ReactJs写一个简单的手风琴菜单效果
- 《LINUX3.0内核源代码分析》第四章:内存管理(7)
- android Java 笔试考题
- Servlet的三种创建方式及servlet解析
- 深入浅出-网络七层模型&&网络数据包
- 如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
- LeetCode 38. Count and Say
- Android 热补丁动态修复框架小结
- ssh