simple-react-ui
Version:
a simple react component library written in TypeScript+ React.js
151 lines (109 loc) • 4.05 kB
Markdown
# simple-react-ui
重复造轮子之用React.js实现简单的UI组件。
1. 自己的狗粮自己吃。
2. 轻量,可配合 Bootstrap.min.css 使用。不追求大而全。
只是JavaScript轮子,暂时不想考虑各浏览器的CSS兼容情况,所以`Pagination`组件的CSS样式就偷懒复用了 Bootstrap 。
换言之,在页面引入 Bootstrap的css 和这里相应的轮子,即可展示出同样的效果,不再需要 bootstrap.min.js 或者 jquery.min.js。
## 安装
```
npm install simple-react-ui --save
```
## 使用
可以一次性全部导入所有SimpleUI组件
```JavaScript
import SimpleUI from 'simple-react-ui';
```
大多时候可以按需导入:
```JavaScript
// 只导入 Pagination
import Pagination from 'simple-react-ui/dist/pagination';
// 只导入 BaiduMap
import BaiduMap from 'simple-react-ui/dist/baidumap';
// 其他...
```
### 分页
示例:
```JavaScript
import React from 'react';
import Pagination from 'simple-react-ui/dist/pagination';
const Posts=React.createClass({
getInitialState(){
return {
page:1,
rows:[
{/**/},
],
current:1,
size:5,
count:10,
semiBandWidth:5,
};
},
fetchData(){ /*fetData and set state*/ },
componentDidMount(){
this.fetchData(this.state.page,this.state.size);
},
render:function(){
return (
<div>
<div>
/* list posts here according to {this.state.rows} */
</div>
<Pagination
total={this.state.count} size={this.state.size}
current={this.state.current}
semiBandWidth={this.state.semiBandWidth}
onChange={(page)=>{
this.setState(
{ page:page , current:page, } ,
()=>{ this.fetchData(page,this.state.size) }
);
}}
/>
</div>
);
}
});
```
### UEditor
提供两种模式, *受控模式* 和 *非受控模式* ,请参见文档。
在受控模式下,用户可以通过
* `value`属性:父组件可以通过`value`属性来动态设置编辑器的内容
* `onChange(content)` 事件处理函数,当编辑器的内容发生变化以`onChange(content)`的方式通知父组件
在非受控模式下,用户主要通过
* `initialContent` 属性来提供初始值
* `afterInit(ue)` 回调函数来与 `UEditor` 互动,其中`ue`参数是`UE.getEditor('id')`返回的编辑器实例。
`afterInit(ue)`在某种程度上类似于原生`React`组件的`ref`回调,我们可以把`ue`传递给父组件,从而可以在父组件中来做任何`UEditor`可以做的事儿。
更多请参见 [文档](https://github.com/newbienewbie/simple-react-ui/blob/master/docs/ueditor.md)
## 开发
### 构建
```
> # 克隆仓库
> git clone https://github.com/newbienewbie/simple-react-ui
> # 安装
> npm install
> # 构建
> npm run build
> # 测试
> npm run test
```
### 文件夹结构
```
simple-react-ui/
index.js # 入口文件,作用是引入经过 babel 转换的ES5文件
lib/ # 源代码,采用TypeScript编写
pagination/ # 分页组件的源代码
... # 其他组件的源代码
__test__/ # 测试
dist/ # 编译后的文件夹
doc/ # 文档
```
### 模块的暴露方式
源码本身使用 `typescript` 开发 ,转码后置入 `/dist`,并交由`index.js`暴露给用户。
## 目前已经实现的组件
- [X] Pagination : 分页组件
- [X] Carousel
- [X] UEditor : 百度`UEditor`的`React`封装
- [X] BaiduMap: 百度地图的`React`封装
- [X] Tree: 树形菜单
- [X] Icon:图标