From 0df6b3da4f42e479a32cb9b2d7f15c4fa773ac6c Mon Sep 17 00:00:00 2001 From: Boyuzhou Date: Sat, 8 Oct 2016 13:39:19 +0800 Subject: [PATCH 1/2] add comp[onents --- 现有组件及待开发.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/现有组件及待开发.md b/现有组件及待开发.md index 1409de7..12bd665 100644 --- a/现有组件及待开发.md +++ b/现有组件及待开发.md @@ -1,8 +1,13 @@ # 组件明细 + ### 现有组件 + - button + ### 待开发组件 + #### 基本组件 + - radio - checkbox - combo @@ -15,18 +20,23 @@ - tooltip - input - step + #### 复杂组件 + - buttonGroup - menu - dialog - message - pagination - refer + #### 布局组件 + - col - row #### 插件式组件 + - 日期组件 - 表格组件 - 表单组件 @@ -34,5 +44,6 @@ - tree #### 核心工具 + - 表单校验 - 拖拽 From e5fc8c02fc31c98ed49f2837ffc0e6c7b6f01491 Mon Sep 17 00:00:00 2001 From: Boyuzhou Date: Sat, 8 Oct 2016 14:15:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix=20=E7=BB=84=E4=BB=B6=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react编码规范.md | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/react编码规范.md b/react编码规范.md index 5c06148..cee3ed6 100644 --- a/react编码规范.md +++ b/react编码规范.md @@ -1,23 +1,49 @@ # react组件开发规范 -## 语言要求 + +## 文件命名 +- 每一个文件只包含一个组件,每一个基本组件只包含单一功能 +- src目录下,如果文件返回是一个类,文件名首字母大写 +- 文件js模块统一使用js后缀名 +- 测试用例文件名使用.spec.js后缀 +- 每一个组件使用一个单独的测试用例文件 + +## js规范 - 使用es6开发 - 使用jsx语法 - 组件命名使用大驼峰, ComponentDemo - 带命名空间的组件,如果一个组件包含只有自身使用的子组件,以该组件为命名空间编写组件,例如Table,Table.Head - 不使用displayName命名 -- 每一个文件只包含一个组件,每一个基本组件只包含单一功能 -- 使用js为扩展名 -- 组件样式调用,使用classnames模块,进行样式处理,使用className调用 - 自定义属性使用data- - 使用propTypes进行props类型校验 - 使用defaultProps定义默认参数 -- 使用getInitialState初始化状态对象 - 尽量少或者不使用ref获取和操作dom节点,使用state和prop进行控制dom - 事件调用使用在元素上onClick调用 - 注意,react和html的表单元素的差异 - 使用es6后,不支持mixin,使用decorator进行扩展,(babel?需要增加解析器)和高阶组件方式扩展。 +- 尽量不使用比较大的第三方js库 + + - 代码规范使用 [airbnb规范](https://github.com/airbnb/javascript/tree/master/react) +## 样式规范 +- 组件样式调用,使用classnames模块,进行样式处理,使用className调用 +- 组件内部使用clsPrefix为样式前缀 +```javascript +const clsPrefix = 'u-select'; +const class1 = { + [`${clsPrefix}-item`]: true, + [`${clsPrefix}-item-last`]: stepLast, + [`${clsPrefix}-status-${status}`]: true, + [`${clsPrefix}-custom`]: icon, + [className]: !!className, + }; +const class2 = [`${clsPrefix}-submit`, `${clsPrefix}-item`]; + +const classString = classNames('hide', class1, class2); + +``` + + ## 基本代码结构 ```javascript @@ -59,3 +85,7 @@ Button.defaultProps = defaultProps; module.exports = Button; ``` + + +参考链接 +https://github.com/react-component/react-component.github.io/blob/master/docs/zh-cn/code-style/js.md