首页
/ React MD v6.0.0 发布:现代化组件库的重大升级

React MD v6.0.0 发布:现代化组件库的重大升级

2025-06-20 04:20:39作者:宣聪麟

项目简介

React MD 是一个基于 React 的 Material Design 组件库,它提供了丰富的 UI 组件和工具,帮助开发者快速构建符合 Material Design 规范的应用界面。最新发布的 v6.0.0 版本是一次重大升级,包含了超过 1200 次提交,带来了诸多新特性、破坏性变更和错误修复。

核心亮点

1. 全新的 Box 组件

Box 组件是这次更新中最实用的新增组件之一,它围绕 CSS 盒模型设计,支持 display: flexdisplay: grid 布局。通过 Box 组件,开发者可以构建大部分 DOM 结构或布局,而无需编写自定义样式。

值得注意的是,随着 Box 组件的引入,原有的 Grid、GridCell、GridList 和 GridListCell 组件已被移除。开发者现在可以使用 Box 组件来实现类似的网格布局效果。

2. 图标系统升级

Material 图标系统得到了全面更新,现在支持最新的 Material 图标,但仅通过 SVG 图标实现。如果开发者需要继续使用字体图标,可以使用新的 MaterialIcon 组件或保留的 FontIcon 组件。

新增的 MaterialSymbol 组件支持自定义重量、等级和光学尺寸,这些设置可以全局应用、针对应用特定部分或单独配置。

3. 改进的 Autocomplete 组件

Autocomplete 组件经过了彻底重做,现在提供了更好的用户体验,行为更类似于可编辑的 Select 组件。新版本的主要改进包括:

  • 默认要求选择有效选项,并会重置到最后有效的选项或空字符串
  • 支持多值选择,可选择显示内联芯片或复选框
  • 新增圆形进度条支持
  • 现在可以分别控制选中的选项和输入值
  • 更直观的组件 API 设计
  • 更强的类型安全性

4. 增强的 Toast 和 Alert 系统

Toast 和 Alert 系统进行了更新,现在可以从任何地方显示 Toast,而不仅限于使用 useAddToast 钩子的 React 组件中。开发者现在可以通过导入新的 addToast 函数来创建 Toast。

其他新特性包括:

  • 支持主题颜色
  • 允许为每个 Toast 单独配置显示时间
  • 当用户悬停在 Toast 上时,超时计时会暂停
  • 支持同时显示多个 Toast
  • 通过自定义 Toast 渲染器属性提供更多定制选项

5. 暗黑模式改进

暗黑模式得到了增强,现在在切换至暗黑主题时,默认会显示交互状态。按钮等原生元素也会根据暗黑模式色彩方案进行更新。

6. 简化的 Slider 组件

Slider 组件进行了简化,现在只需要 value 和 setValue 即可使用。由于这些变化,RangeSlider 组件不再需要,其功能已合并到 Slider 组件中。

此外,Slider 组件现在支持在下方显示标记,帮助用户在范围内定位特定值。

7. 其他组件改进

  • Tooltip 现在支持仅在文本溢出时显示
  • 新增 objectFit 实用函数,用于样式化图片、视频和其他媒体类型
  • Tab 组件支持垂直渲染和保持一致的标签面板高度
  • Tree 组件新增了扩展模式等自定义选项
  • CircularProgress 和 LinearProgress 组件现在支持多种主题颜色

开发者体验提升

1. 样式工具和类名实用函数

大多数组件现在都提供了类名实用函数,允许开发者在不使用组件本身的情况下应用样式。命名约定使用 camelCase 而非 PascalCase。

此外,新增了 cssUtils 辅助工具,用于常见样式处理。

2. 测试工具改进

新增了与 Jest 和 Vitest 集成的 polyfills 和测试工具,改善了测试体验。

3. 新增组件和钩子

v6.0.0 引入了多个新组件和钩子,包括但不限于:

  • AsyncButton
  • CircularProgressSuspense
  • ColorSchemeProvider
  • ClickableCard
  • ErrorBoundary
  • HighlightText
  • Mark
  • Navigation
  • NoSsr
  • SegmentedButton
  • SkeletonPlaceholder
  • Slide
  • StickyTableSection
  • TooltippedButton
  • WindowSplitter
  • 以及多个实用钩子如 useAsyncFunction、useCSSVariables 等

文档与样式改进

1. 全新文档网站

文档网站进行了重新设计,改进包括:

  • 导航基于组件、钩子或功能而非包
  • 示例和演示更专注于单一功能
  • 大多数示例和演示可以直接在网站内编辑和预览
  • 代码编辑器主题可在全局设置菜单中配置

2. 样式系统优化

样式系统进行了重写,始终使用最低的 CSS 特异性,使自定义样式更容易覆盖 react-md 的默认样式。

3. 焦点样式改进

几乎所有组件的 :focus 样式现在使用 :focus-visible 而非依赖 .keyboard mode &:focus,移除了对这些样式的 UserInteractionModeProvider 要求。

性能与兼容性

1. ID 处理改进

所有需要 id 的 react-md 组件现在默认使用 useId(),可以省略 id 属性。

2. SSR 支持增强

通过在新的 CoreProviders 中启用 ssr 模式,临时组件(如对话框和覆盖层)在服务器端渲染后会保持可见和挂载状态,直到首次卸载。

3. StrictMode 兼容

修复了所有 StrictMode 错误,react-md 现已准备好支持 React 19。

4. Portal 改进

Portal 现在默认将所有内容渲染在 <div id="rmd-portal-container" /> 内,而非 document.body,便于开发者工具检查和防止在 document.body 中渲染额外节点可能出现的问题。

构建与打包优化

1. ESM 支持

react-md 现在仅支持 ESM,移除了对传统 @import Sass 语法的支持。

2. 模块导入优化

新的 @react-md/core 包支持从特定路径导入,而非根桶文件导入,提高了开发速度。

3. CSS 变量组织

自定义属性现在会在开发者工具中自动分组,便于检查。

4. 体积优化

gzipped 后的文件大小有所减小:

  • JavaScript: 从 92.51 kB 降至 82.77 kB
  • SCSS: 从 18.08 kB 降至 16.55 kB

升级建议

对于计划升级到 react-md v6 的开发者,建议仔细阅读迁移指南,了解所有破坏性变更和新的最佳实践。这次重大更新虽然包含许多破坏性变更,但也带来了显著的性能改进、更好的开发者体验和更丰富的功能集。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
162
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
96
15
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
198
279
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
16
Git4ResearchGit4Research
Git4Research旨在构建一个开放、包容、协作的研究社区,让更多人能够参与到科学研究中,共同推动知识的进步。
HTML
22
1
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
950
557
risc-v64-naruto-pirisc-v64-naruto-pi
基于QEMU构建的RISC-V64 SOC,支持Linux,baremetal, RTOS等,适合用来学习Linux,后续还会添加大量的controller,实现无需实体开发板,即可学习Linux和RISC-V架构
C
19
5