公司需要做一个IDE,要做IDE当然少不了文件列表了。下面我就来展示一下刚刚研究的一个库。

下面是链接:https://react.rocks/example/react-ui-tree

至于如何导入module,官方文档都写的很清楚我就不再贴出。

这里由于给的介绍太过简单。我就将我的代码贴出:

第一个文件就是我们组件文件:

var cx = require('classnames');
var React = require('react');
var ReactDOM = require('react-dom');
var Tree = require('react-ui-tree');
var tree = require('./tree');
require('react-ui-tree/dist/react-ui-tree.css')
require('./css.css') var UiTree = React.createClass({
getInitialState() {
return {
active: null,
tree: tree
};
}, renderNode(node) {
return (
<span className={cx('node', {
'is-active': node === this.state.active
})} onClick={this.onClickNode.bind(null, node)}>
{node.module}
</span>
);
}, onClickNode(node) {
this.setState({
active: node
});
}, render() {
return (
<div className="app">
<div className="tree">
<Tree
paddingLeft={20}
tree={this.state.tree}
onChange={this.handleChange}
isNodeCollapsed={this.isNodeCollapsed}
renderNode={this.renderNode}
/>
</div>
<div className="inspector">
<button onClick={this.updateTree}>update tree</button>
<pre>
{JSON.stringify(this.state.tree, null, ' ')}
</pre>
</div>
</div>
);
}, handleChange(tree) {
this.setState({
tree: tree
});
}, updateTree() {
var tree = this.state.tree;
tree.children.push({module: 'test'});
this.setState({
tree: tree
});
}
}); module.exports = UiTree;

下面是数据:

module.exports = {
module: 'react-ui-tree',
children: [{
module: 'dist',
collapsed: true,
children: [{
module: 'node.js',
leaf: true
}, {
module: 'react-ui-tree.css',
leaf: true
}, {
module: 'react-ui-tree.js',
leaf: true
}, {
module: 'tree.js',
leaf: true
}]
}, {
module: 'example',
children: [{
module: 'app.js',
leaf: true
}, {
module: 'app.less',
leaf: true
}, {
module: 'index.html',
leaf: true
}]
}, {
module: 'lib',
children: [{
module: 'node.js',
leaf: true
}, {
module: 'react-ui-tree.js',
leaf: true
}, {
module: 'react-ui-tree.less',
leaf: true
}, {
module: 'tree.js',
leaf: true
}]
}, {
module: '.gitiignore',
leaf: true
}, {
module: 'index.js',
leaf: true
}, {
module: 'LICENSE',
leaf: true
}, {
module: 'Makefile',
leaf: true
}, {
module: 'package.json',
leaf: true
}, {
module: 'README.md',
leaf: true
}, {
module: 'webpack.config.js',
leaf: true
}]
}

这里有个坑,就是当我们将程序运行起来的时候发现样式是不对的,查阅它的源码才知道他是将样式放入了“.less”的文件之中,所以我们需要将文件先转化成css文件,然后添加文件手动导入:

.tree {
position: fixed;
top:;
left:;
bottom:;
width: 300px;
overflow-x: hidden;
overflow-y: auto;
background-color: #21252B;
}
.m-node.placeholder {
border: 1px dashed #1385e5;
}
.m-node .inner {
color: #9DA5B4;
font-size: 12px;
font-family: Menlo;
}
.m-node .node {
display: inline-block;
width: 100%;
padding: 4px 5px;
}
.m-node .node.is-active {
background-color: #31363F;
}
.m-node .children {
transition: 1s;
} *,
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body {
margin:;
padding:;
font-size: 100%;
}
.inspector {
margin-left: 400px;
}
.inspector pre {
font-family: Menlo;
font-size: 13px;
}

最后还有一个坑就是他跟bootstrap是有冲突的,所以如果你使用了bootstrap再使用它,可能样式会有所改变。

demo可以从我的github上看到:

https://github.com/weifengzz/react-ui-tree-demo

React react-ui-tree的使用的更多相关文章

  1. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  2. React/React Native 的ES5 ES6写法对照表

    //es6与es5的区别很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component ...

  3. React/React Native 的ES5 ES6写法对照表-b

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...

  4. [React] React Fundamentals: Integrating Components with D3 and AngularJS

    Since React is only interested in the V (view) of MVC, it plays well with other toolkits and framewo ...

  5. Element ui tree树形控件获取当前节点id和父节点id

    低版本Element ui tree树形控件获取当前节点id和父节点id的方法:点击查看 最新版本Element ui tree树形控件获取当前节点id和父节点id教程: 1.找到node_modul ...

  6. React: React组件的生命周期

    一.简介 在前面的第二篇博文中对组件的生命周期虽然做了一个大略介绍,但总感觉说的过于简单,毕竟生命周期是React组件的核心部分.在我们熟练使用React挂载和合成组件来创建应用表现层的过程中,针对数 ...

  7. React: React的属性验证机制

    一.简介 在开发中,属性变量类型的验证,几乎是任何语言都必须关注的问题,因为如果传入的数据类型不对,轻者程序运行仅仅是给出警告⚠️,严重的会直接导致程序中断,APP闪退或者web页面挂掉,这是很严重的 ...

  8. React/react相关小结

    React React组件由React元素组成,React组件使用React.Component或React.PureComponent来生成:React元素使用JSX的语法来编写或使用React.c ...

  9. 使用CRA开发的基于React的UI组件发布到内网NPM上去

    前言:构建的ES组件使用CNPM发布内网上过程 1. 使用Create-React-APP开的组件 如果直接上传到NPM,你引用的时候会报: You may need an appropriate l ...

  10. [React] Optimistic UI update in React using setState()

    In this lesson we will refactor an existing UI update from a typical loading approach to an optimist ...

随机推荐

  1. js中完数的输出

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. hdu1520 第一道树形DP,激动哇咔咔!

    A - 树形dp Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  3. FCKeditor插件开发实例:uploadify多文件上传插件

    FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器.它志于轻量化,不需要太复杂的安装步骤即可使用.它可和PHP.JavaScript.ASP.ASP.NET.ColdFusi ...

  4. myeclipse10 如何把代码预览的窗口去掉

    1,选择菜单: windows -> preferences2,在弹出窗口中选择General-> Editors -> FileAssociations3,在上方框内选择*.jsp ...

  5. php 实时推送代码

    网站质量不错的网站可以在百度站长平台/数据提交/sitemap栏目下看到实时推送的功能, 目前这个工具是邀请开放, 百度的实时推送的api接口可以实时推送我们新发布的文章, 保证百度在第一时间收录. ...

  6. 学习hadoop

    一.笔记本触摸板关闭方法 1.在windows下有官方驱动. 2.ubuntu下没有 操作方法如下: 1,终端操作 临时禁止触摸板:sudo modprobe -r psmouse 开启触摸板:sud ...

  7. bower解决js库的依赖管理

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  8. hadoop集群之HDFS和YARN启动和停止命令

    假如我们只有3台linux虚拟机,主机名分别为hadoop01.hadoop02和hadoop03,在这3台机器上,hadoop集群的部署情况如下: hadoop01:1个namenode,1个dat ...

  9. javascript-ajax学习

    /**  *     @todo 封装Ajax 传输类  *     @param params:参数  *    @example 用法: var mAjaxer = new Ajaxer(para ...

  10. Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解

     上一篇博客我们讲解了如何使用Linux提供的文件操作函数,本文主要讲解使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #in ...