CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
React 生态进阶/课时/UI 组件库
RawBlame
课时目录12 节

React 生态进阶

  1. 01React 生态地图
  2. 02客户端状态管理
  3. 03服务端状态与 TanStack Query
  4. 04Axios 与数据获取
  5. 05GraphQL 客户端
  6. 06UI 组件库
  7. 07动画与 Framer Motion
  8. 08E2E 测试
  9. 09React Native 概览
  10. 10表单与校验
  11. 11生态层性能
  12. 12综合练习

UI 组件库

MUI、Chakra、shadcn/ui。

35 分钟

UI 组件库

从零写 Button、Dialog、Select 费时且难统一无障碍。MUI、Chakra UI、shadcn/ui 代表三种典型路线:全量 Material、CSS-in-JS 主题、复制到项目的 Radix + Tailwind 原语。

学习目标

  • 对比三类 UI 库的集成方式与定制成本
  • 结合 Tailwind / Next.js 选型(见 nextjs-essentials)
  • 避免「库叠库」导致 bundle 膨胀

三种路线

库风格定制与 Tailwind
MUIMaterial Designtheme 覆盖可共存,需约定
Chakra简约、tokenextendTheme类似
shadcn/ui你仓库里的组件源码直接改文件原生 Tailwind

shadcn/ui 不是 npm 大包:CLI 把组件复制到 components/ui/,所有权在你,适合 platform 这类 Tailwind 优先 项目。

MUI 要点

import Button from "@mui/material/Button";
import { ThemeProvider, createTheme } from "@mui/material/styles";

const theme = createTheme({
  palette: { primary: { main: "#2563eb" } },
});

export function App() {
  return (
    <ThemeProvider theme={theme}>
      <Button variant="contained">开始学习</Button>
    </ThemeProvider>
  );
}

优势:组件全、DataGrid 等企业件。代价:emotion/styled 运行时、与 Tailwind 类名混用时需团队规范。

Chakra 要点

import { ChakraProvider, Button, Box } from "@chakra-ui/react";

<Box p={4}>
  <Button colorScheme="blue">提交</Button>
</Box>

API 一致、暗色模式友好;v3 与旧版迁移需查官方指南。

shadcn/ui 要点

npx shadcn@latest init
npx shadcn@latest add button dialog

生成 Button.tsx 基于 Radix 无障碍原语 + class-variance-authority。与 Next.js App Router、Server Component 共存时,交互组件标 'use client'。

选型建议

  • 设计稿已是 Material:MUI
  • 快速后台、统一 token:Chakra
  • Tailwind 站点、要控源码:shadcn/ui
  • 仅几个控件:Headless UI / Radix 单组件,不必整库

状态与数据仍用 rxe-state、,UI 库 状态管理。

rxe-query
不替代

练习

  • 用 shadcn/ui 或 MUI 实现一个「课时卡片」含标题、时长、链接
  • 检查 Lighthouse:对比裸 div 与整库首屏 JS 差异(定性即可)
  • 读 platform 现有组件,判断更接近哪条路线

小结

UI 库卖的是一致性与 a11y,不是业务逻辑。 下一课动画与 Framer Motion。

加载本节练习…
← 上一课GraphQL 客户端下一课 →动画与 Framer Motion