react组件相关规范整理

1,263 阅读3分钟

系列引言

最近想把团队组件开发规范下,达到写法规整、方便迁移复用维护、提升代码质量,在网上看了不少好文章。特归纳总结下要点,便于参照。如有侵权,联系后处理~

组件开发

  • 单一职责原则,高内聚低耦合
  • 组件类型细分:基础UI组件、可复用业务组件、页面容器组件
  • hooks方式抽象通用的业务逻辑复用
  • 组件状态仅维护在组件内部,只用全局都用的数据才使用redux

开发规范

  1. 文件组织

src/
  components/      # 🔴 项目通用的‘展示组件’
    Button/
      index.tsx    # 组件的入口, 导出组件
      Groups.tsx   # 子组件
      style.css    # 组件样式
    ...
    index.ts       # 到处所有组件
  containers/      # 🔴 包含'容器组件''页面组件'
    LoginPage/     # 页面组件, 例如登录
      components/  # 页面级别展示组件,这些组件不能复用与其他页面组件。
        Button.tsx # 组件未必是一个目录形式,对于一个简单组件可以是一个单文件形式. 但还是推荐使用目录,方便扩展
        Panel.tsx
      reducer.ts   # redux reduces
      useLogin.ts  # (可选)放置'逻辑', 按照👆分离逻辑和视图的原则,将逻辑、状态处理抽取到hook文件
      types.ts     # typescript 类型声明
      style.css
      message.ts
      constants.ts
      index.tsx
    HomePage/
    ...
    index.tsx      # 🔴应用根组件
  hooks/           # 🔴可复用的hook
    useList.ts
    usePromise.ts
  ...
  serves/           # 🔴菜单功能模块为组织单位的请求服务配置,方便维护
    useList.ts
    usePromise.ts
  ...
  index.tsx        # 应用入口, 在这里使用ReactDOM对跟组件进行渲染
  stores.ts        # redux stores
  contants.ts      # 全局常量

  • 组件及页面名称统一首字母大写驼峰式命名,其余首字母小写驼峰式命名
  • 单个文件限制一般不能超过300行,超过 300 行则说明需要对这个组件进进一步拆分
  1. 依赖引入

  1. 组件开发

  1. 组件拆分

公共方法封装

  • 写清楚方法说明,使用场景、入参格式、处理结果

  • 公共方法超过两个入参用对象传入,方法中有默认值,对传入值进行类型校验

代码提交

说明commit内容的类型

  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动
  • revert: 代码回滚
  • build: 影响系统构建或者外部依赖的更改(例如:glup,npm, broccoli)
  • ci: 对CI配置文件和脚本的修改
  • perf:性能提升

小技巧

  • 如果组件不需要状态, 则使用无状态组件

  • 性能上比较: 无状态函数 > 有状态函数 > class 组件

  • 最小化 props(接口). 不要传递超过要求的 props

  • 如果组件内部存在较多条件控制流, 这通常意味着需要对组件进行抽取

  • 不要过早优化. 只要求组件在当前需求下可被复用, 然后'随机应变'

  • 接口一致的数据录入组件

参考