Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

    • UI 框架

      • Angular

      • React

        • React Hooks 实现原理
        • React 组件销毁需要注意的异步更新问题
        • React项目结构规范
        • React Fiber 实现原理
        • React Fiber 本质
        • React「 Refs 转发 」初探
        • React之低版本chrome setState loading2次状态出现的bug
        • react学习
        • 使用 immer 修改复杂对象
        • input 原生控件,React 是如何实现受控输入的?
        • useEffect 如何处理 async
        • 用组件替换文本中emoji字符
        • 谈谈 React 组件设计原则
          • 规范的 API
          • slot 和 renderProps 的选择
            • 拓展阅读
      • Solid

      • Svelte

      • Vue

      • 框架本质

    • 开发框架

    • 组件库

  • 工程能力

  • 应用基础

  • 专业领域

  • 业务场景

  • 大前端
  • 应用框架
  • UI 框架
  • React
gahing
2023-08-18
目录

谈谈 React 组件设计原则笔记

从易用性、可维护性、可复用性三个方面考虑

  • 易用性:从组件使用者角度出发
    • 规范的 API:通用命名、尽量提供默认值
    • 支持组件组装
    • 支持 renderProps 和 ReactNode props
    • 尽可能受控,某些场景也暴露非受控方式
  • 可维护性:从组件维护者角度出发
    • 可以从 solid 角度考虑
    • 组合优于继承
  • 可复用性:同时从组件使用者和维护者角度出发
    • 样式覆盖
    • 梳理并提供可能存在需求的 slot :比如选择器组件的 renderFooter
    • Headless UI :两个模式,以 hooks 方式复用逻辑并保留不复用 UI、提供原子组件

# 规范的 API

减少必填项,提供默认值

通用命名原则:

  1. onXXX:监听/触发方法
  2. renderXXX:含参的渲染方法,比如 renderItem: (data) => Element ; 无参推荐直接传 Element ,比如 title。详见:slot 和 renderProps 的选择
  3. beforeXXX/afterXXX:前置/后置动作,比如 beforeUpload/afterUpload
  4. xxxProps:组件中的子组件属性命名,比如
  5. 优先使用常见单词进行命名,如:value、visible、size、disabled、label、type 等等
  6. 暴露通用参数:style、className、rootClassName(组件最外层 className)

# slot 和 renderProps 的选择

# 拓展阅读

  • 浅谈前端组件设计-ELab (opens new window)
  • 7 Architectural Attributes of a Reliable React Component (opens new window)
  • React组件设计实践总结-系列文章-荒山 (opens new window)
编辑 (opens new window)
上次更新: 2024/09/01, 23:56:56
用组件替换文本中emoji字符
Solid开发总结

← 用组件替换文本中emoji字符 Solid开发总结→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式