简介
参考
算是最合理的React/JSX编码规范之一了。
Create创建模块
如果你的模块有内部状态或者是refs, 推荐使用 class extends React.Component 而不是 React.createClass。
1 | // bad |
如果你的模块没有状态或是没有引用refs, 推荐使用普通函数(非箭头函数)而不是类:
1 | // bad |
Naming 命名
- 文件名: 文件名使用帕斯卡命名. 如, ReservationCard.jsx.
- 引用命名: React模块名使用帕斯卡命名,实例使用骆驼式命名.
1 | // bad |
- 模块命名: 模块使用当前文件名一样的名称. 比如 ReservationCard.jsx 应该包含名为 ReservationCard的模块. 但是,如果整个文件夹是一个模块,使用 index.js作为入口文件,然后直接使用 index.js 或者文件夹名作为模块的名称:
1 | // bad |
- 属性命名: 避免使用DOM相关的属性来用作其他的用途。
1 | // bad |
Alignment 代码对齐
1 | // bad |
Quotes 单引号还是双引号
- 对于JSX属性值总是使用双引号(“), 其他均使用单引号(‘).
为什么? HTML属性也是用双引号, 因此JSX的属性也遵循此约定.
1 | // bad |
Props 属性
- JSX属性名使用骆驼式风格camelCase.
1 | // bad |
- 如果属性值为 true, 可以直接省略.
1 |
|
- 避免使用数组的index来作为属性key的值,推荐使用唯一ID.
1 |
|
- 对于所有非必须的属性,总是手动去定义defaultProps属性.
1 | // bad |
- 特别提醒:尽可能地筛选出不必要的属性。
1 | //good |
Refs
- 总是在Refs里使用回调函数
1 | // bad |
Parentheses 括号
- 将多行的JSX标签写在 ()里
1 | // bad |
Methods 函数
- 当在 render() 里使用事件处理方法时,提前在构造函数里把 this 绑定上去
为什么? 在每次 render 过程中, 再调用 bind 都会新建一个新的函数,浪费资源.
1 | // bad |
- 在 render 方法中总是确保 return 返回值
1 | // bad |
Object 定义对象的细节
逗号问题
- 单行定义的对象结尾不要逗号:
1 | // bad |
- 多行定义的对象要保留逗号:
1 | // bad |
一次性初始化完全
- 不要声明之后又给对象添加新属性:
1 | // bad |
- 如果一定非要加请使用Object.assign:
1 | const a = {}; |