react封装组织架构递归树
发布时间:2020-12-15 20:34:39 所属栏目:百科 来源:网络整理
导读:想用react实现一个递归树,但一些框架里面的有些不符合需求,于是自己写了个,功能比较简单,欢迎批评指正。。 react实现这样一个组织架构递归树,下级部门的收起和展开,点击部门名称时请求接口获取下级部门以及员工等。效果如下: 首先封装左边的组织架构
想用react实现一个递归树,但一些框架里面的有些不符合需求,于是自己写了个,功能比较简单,欢迎批评指正。。 react实现这样一个组织架构递归树,下级部门的收起和展开,点击部门名称时请求接口获取下级部门以及员工等。效果如下: 首先封装左边的组织架构组件organize-tree import React,{ Component } from ‘react‘; export default class OrganizeTree extends React.Component { render(){ let self = this; return ( <div className="OrganizeTree"> <div className="left"> { this.props.treedata.map(function(item,index){ return <div className="row-li" key={index}> <span className={`${item.show?‘‘:‘rotate90‘}`}> <i className={`iconfont arrow ${item.departs?‘icon-arrowdropdown‘:‘‘}`} onClick={self.toggle.bind(self,item,index)}></i> </span> <span className={`depart ${item.departs?‘‘:‘departmentname‘}`} onClick={self.showdepart.bind(self,index)}>{item.departmentName}</span> { item.departs&&item.show?<OrganizeTree treedata={item.departs} toggleTree={self.toggle.bind(self,item.departs)} showDepart={self.showdepart.bind(self,item.departs)}/>:‘‘ } </div> }) } </div> </div> ) } toggle(item,index){ // 点击左侧切换符号切换展开收起 if(typeof index === ‘number‘){ this.props.toggleTree(item) }else{ this.props.toggleTree(index) } } showdepart(item,index){ if(typeof index === ‘number‘){ this.props.showDepart(item) }else{ this.props.showDepart(index) } } } 样式tree.less .Organization{ // 组织架构树组件 .left-tree{width: 200px;background: #fff;margin: 15px 0 15px 15px;min-height: 700px; .search-wrapper{padding:20px 10px;position:relative; .search{font-size: 12px;height: 30px;padding-left: 25px;width: 100%;line-height: 30px;border:1px solid #d8d8d8;} .icon-sousuo{position: absolute;top: 25px;left: 15px;z-index: 1;color: #d8d8d8;} } .row-li{text-align: left;font-size: 12px;line-height: 35px; .arrow{font-size: 30px;} .departmentname{padding-left: 16px;} .depart{cursor: pointer;} .icon-arrow-right{font-size: 24px;} } } .right-con{width: 100%; .title{margin: 10px 0; .iconfont{margin-right: 10px;} } .bt1p{border-bottom: 1px solid #d8d8d8;padding-bottom: 10px;} } } .OrganizeTree{padding-left: 15px;} 页面引用该组件 organization.jsx import React,{ Component } from ‘react‘; import InterfaceServer from ‘@/axios/interface‘ const interfaceServer = new InterfaceServer(); import OrganizeTree from ‘@/components/organize-tree‘ import {connect} from ‘react-redux‘ import {bindActionCreators} from ‘redux‘ import * as infoActions from ‘@/store/userinfo/action‘ import store from ‘@/store/store‘ 更多详细代码见?https://github.com/leitingting08/react-app/tree/master/src/components/organize-tree (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |