项目/开发工具

做 React 后台页面,Semi Design 能省下哪些活?

做一个后台页面,真正让人磨蹭的,常常不是多复杂的算法。输入框旁边放什么提示,没填内容怎么报错,表格里的按钮怎么对齐,换个页面以后样式又是不是同一套——这些零碎活,做第二遍就有点烦了。

Semi Design 适合从这里看。它是抖音前端团队维护的 React 组件库和设计系统,表单、表格、弹窗这些常用部件已经准备好。你负责把业务接进去,不用先从画一个按钮开始。

Semi Design 官方动图展示工作台、数据卡片、文件表格和界面主题
官方 README 的整体演示。先看页面里的表格、筛选和卡片怎样放在一起,不必把宣传语当作效果保证。原 GIF 未修改;来源:DouyinFE / Semi Design,图源与许可。

它不是下载后就能用的后台系统

先分清这一点,能省不少时间:Semi 不会替你准备用户数据库、登录接口和权限规则,也不是换上就能运行的 Typecho 主题。它提供的是写前端时能拿来组合的部件。

比如做一个资料管理页,表单用来填名称,表格用来显示条目,弹窗用来确认修改。控件的外观和不少交互可以沿用 Semi,数据从哪来、谁能修改、怎样保存,仍是项目自己的工作。

所以它更适合已经在写 React、正要做管理台或内部工具的人。如果只想给博客换个皮肤,不想碰 JavaScript 和构建工具,这套东西反而绕远了。已有一套用得顺手的组件库,也没必要只为几张漂亮动图,把整个项目迁过来。

先做一个表单,比先研究整套设计系统更实在

第一次看这类项目,很容易顺着介绍一路看到主题商店、设计插件,再回头发现自己连一个输入框都没接上。可以先把目标缩小:填一个工具名称,点提交,在页面里看到提交的数据。

下面按已有的普通客户端 React 工程说明,需要机器上已有 Node.js、包管理器,且工程本身能正常启动。不是把代码直接粘进网页后台。本篇没有在本机安装或运行 Semi,示例依据官方接口整理,执行结果需要你在自己的工程里核对。

在项目根目录,也就是能看到 package.json 的位置,安装组件包。本次资料核对以 2.104.0 为参考版本:

npm install @douyinfe/semi-ui@2.104.0

React 版本先看自己项目的 package.json。按当前仓库的快速开始及 React 19 适配说明,React 16、17、18、19 使用同一个包;React 19 要在入口文件最顶部、任何 Semi 组件被使用之前,加上这一行:

// main.jsx / main.tsx,仅 React 19 工程需要
import '@douyinfe/semi-ui/react19-adapter';

网上仍能找到让 React 19 改装 @douyinfe/semi-ui-19 的旧说明,不要把两套接法混在一起。维护旧工程时,先看锁定版本对应的文档;也不要为了试组件库顺手升级整套 React。

在单独的练习工程里,把下面内容放进已被入口引用的 App.jsx。正式工程不要直接覆盖现有页面,另建练习组件再挂载。若用 TypeScript,可以先在允许 JSX 的练习工程照着理解,类型收紧留到自己的代码里处理。

import { useState } from 'react';
import { Button, Form } from '@douyinfe/semi-ui';

export default function App() {
  const [submitted, setSubmitted] = useState(null);

  return (
    <main style={{ maxWidth: 520, margin: '40px auto', padding: 20 }}>
      <h1>记录一个工具</h1>
      <Form onSubmit={values => setSubmitted(values)}>
        <Form.Input
          field="name"
          label="工具名称"
          placeholder="例如:资料整理助手"
          rules={[{ required: true, message: '先填一个名称' }]}
        />
        <Form.TextArea
          field="note"
          label="准备拿它做什么"
          placeholder="写一句用途就够了"
        />
        <Button htmlType="submit" theme="solid" type="primary">
          检查提交内容
        </Button>
      </Form>
      {submitted && <pre>{JSON.stringify(submitted, null, 2)}</pre>}
    </main>
  );
}

沿用工程原有的启动方式打开页面。先空着名称提交,再填入名称和用途提交,检查必填提示以及下方 JSON 的字段。这里要核对的不是“按钮能不能点”,而是表单收集的内容是不是自己刚刚填写的。

field="name" 对应提交结果里的 name;Form.Input 和 Form.TextArea 是 Form 包装过的控件,表单会管理它们的数据。别把普通 Input 随便换进来,又以为它一定会自动进入提交结果。默认值可用 initValue 或表单的 initValues,不必再给每个字段手写一套状态同步。

这个小例子只把结果放进页面内存,刷新就没有了,没有保存到服务器。接正式业务时,需要在提交回调里调用自己的接口,补上服务端校验和错误反馈。界面上的“必填”检查,不能代替后端检查。

表单通了,再看 Table 文档会轻松些:columns 定义每列显示什么,dataSource 提供每一行的数据,每行要有稳定且唯一的标识。先用两三条假数据确认布局,再接真实接口,不必第一次就把筛选、分页和行编辑一起做完。

项目颜色不一样,别急着一条条覆盖 CSS

默认控件能用了,下一步往往是“这个蓝色不太像我们的产品”。只改一个按钮容易,改到悬停、按下、禁用,再碰到输入框和弹窗,零散覆盖很快就不好维护。

Semi 的主题方案值得在这个阶段再看。它把颜色、字体、圆角等设计值整理成可复用的变量,DSM 则提供了管理设计系统的工具。你调整的是一套约定,而不是记住每个组件内部的选择器。

官方 DSM 图片左侧展示主色、悬停和激活色值,右侧为 Figma 中的对应设计变量
这里比较有用的是 primary、hover、active 等状态成组管理的思路,不只是换一个主色。官方 README 原图未修改;图源与许可。

刚开始不必为此建一整套公司级规范。先选一个页面,看默认主题是否合适;确实要定制,再按所用构建工具接主题方案。默认组件引入和定制主题的构建配置是两回事,不能拿一条安装命令概括全部情况。

深色模式也类似。Semi 有配套色盘,但自己写死成白底黑字的业务区域,不会因为组件换了主题就自动协调。检查时把正文、背景、提示和禁用状态一起看,别只看按钮颜色。

README 里那些 GIF,演示的是另一段工作

这也是 Semi 比单纯“按钮合集”更值得留意的地方:它还在处理设计稿交给开发之后,那段反复对照尺寸和样式的工作。

官方 GIF 在 Figma Dev Mode 中选中表单图层并展示设计稿转代码相关面板
官方 Dev Mode 演示,展示设计图层与出码流程;不是本站生成的页面,也不是本篇表单例子的运行结果。原 GIF 未修改;图源与许可。

官方把设计稿转代码这部分叫 D2C。README 展示了 Figma 插件和 Dev Mode 中的使用方式,还演示了转到 CodeSandbox 继续编辑代码的流程。对于本来就在用 Figma 和 Semi 组件的团队,这比照着截图重新量间距更有吸引力。

官方 GIF 展示从 Figma 中的表单设计经插件转到代码编辑与预览环境的过程
README 的 CodeSandbox 流程演示。看的是设计与代码之间怎样交接,不代表任意设计稿都能直接变成完整业务系统。原 GIF 未修改;图源与许可。

不过,先别把“出了代码”理解成“项目已经做好”。生成的界面仍要读一遍:数据有没有接上,按钮是不是只有样子,错误和空状态有没有处理,窄屏是否能用。这些属于业务验收,不会在一张漂亮的设计稿里自动补齐。

Figma、插件及在线编辑环境也各有账号、服务和访问条件。图里的演示界面不一定与今天完全相同,是否适合你的工作流,要单独核对;不能从组件库采用 MIT 许可,就推导出相关在线服务全部免费、全部可离线使用。

如果你是一个人做小工具,没有设计师交稿,暂时忽略 D2C 完全没关系。先把前面那个表单做明白,收益反而更直接。

值不值得用,拿一页真实需求判断

我会把 Semi 放进 React 管理台、资料录入页和内部工具的候选里。理由不是组件数量,而是这些页面经常同时需要表单、数据展示和一致的状态样式,正好能用到它提供的基础。

挑一个你确实要做的页面,列出必须有的控件,再翻官方示例看能不能接近需求。若还要大量绕过默认行为、全局覆盖样式,就值得停下来比较别的方案。已经维护得很稳定的旧系统,不必为了统一视觉,先承担一次大迁移。

普通用户想找一款装好就能整理资料的软件,这篇不是那个方向;开发者想少写一遍基础控件,则可以从一个表单开始,而不是先把整套设计系统研究完。

资料核对:2026 年 10 月 29 日。依据 Semi Design 官方中文 README、仓库内快速开始与 React 19 适配说明,以及 Form、Table、主题资料整理;组件接入以 2.104.0 为参考。未安装组件库,未运行示例,未测试 Figma 插件和在线出码服务。三张 GIF 与一张 PNG 均为官方 README 素材,原文件未修改;演示所用软件版本未明确标注。来源和完整许可见本篇图源说明。这篇原创项目介绍采用CC BY 4.0协议授权,你可以自由转载、二次改编甚至用于商业分享,只要标注清楚原作者和原文链接即可。原作者:ConfigCrate。改编时请注明修改;本授权仅适用于本站原创介绍及标注为自制的配图,项目代码、商标和第三方素材遵循各自许可。
项目地址
https://github.com/DouyinFE/semi-design
复制地址后在浏览器中打开。

随机推荐

说说你的使用情况

称呼和留言可能公开显示,请勿提交密码、令牌或私人文件。邮箱及评论 IP 等信息由后台处理。