TDesign React logo

TDesign React

腾讯 TDesign 设计体系的 React 实现,72 个高质量组件,跨框架一致性设计

React组件库腾讯跨框架

腾讯 TDesign 设计体系的 React 实现,提供 72 个高质量组件。核心优势是跨框架一致性,React 与 Vue 版本保持统一 API 和视觉表现,支持 Design Token 主题定制和暗色模式,保持每周发布的高频更新节奏。

TDesign React

腾讯 TDesign 设计体系的 React 实现,72 个高质量组件,跨框架一致性设计

技术简介说明

TDesign React 是腾讯 TDesign 设计体系的 React 框架实现,由腾讯内部开源协作产出。TDesign 作为腾讯企业级设计系统,覆盖了 Vue 2、Vue 3、React、微信小程序、Flutter、UniApp 等多个平台,致力于为企业提供一致的设计语言和开发体验。

TDesign React 的核心价值在于跨框架一致性——无论团队使用 Vue 还是 React,都能获得统一的组件 API、一致的设计规范和相同的视觉表现。这一特性在腾讯内部的多团队协作场景中尤为重要,也在外部企业中具有独特价值。

作为腾讯出品的企业级组件库,TDesign React 提供 72 个精心设计的组件,支持 Design Token 主题定制、暗色模式、国际化和完整的 TypeScript 类型支持。项目保持每周发布的高频更新节奏,是 2025-2026 年最活跃的 React 组件库之一。

基本信息

快速上手

安装

# npm
npm install tdesign-react
 
# yarn
yarn add tdesign-react
 
# pnpm
pnpm add tdesign-react

基础配置

引入组件样式:

// 方式一:全量引入样式
import 'tdesign-react/es/style/index.css'
 
// 方式二:按需引入(推荐,配合 tree-shaking)
// 直接引入组件即可,样式会自动跟随

使用 ConfigProvider 进行全局配置:

import React from 'react'
import { ConfigProvider } from 'tdesign-react'
import 'tdesign-react/es/style/index.css'
import zhConfig from 'tdesign-react/es/locale/zh_CN'
 
function App() {
  return (
    <ConfigProvider globalConfig={zhConfig}>
      <YourApplication />
    </ConfigProvider>
  )
}

最小示例

import React from 'react'
import { Button, MessagePlugin } from 'tdesign-react'
import 'tdesign-react/es/style/index.css'
 
function App() {
  const handleClick = () => {
    MessagePlugin.success('欢迎使用 TDesign React!')
  }
 
  return (
    <div style={{ padding: 40 }}>
      <h1>Hello TDesign</h1>
      <Button theme="primary" onClick={handleClick}>
        点击我
      </Button>
    </div>
  )
}
 
export default App

核心概念与架构

TDesign 设计体系

TDesign 是一套完整的企业级设计系统,React 版是其多框架实现之一:

┌─────────────────────────────────────────────┐
│              TDesign 设计体系                 │
├───────────────┬─────────────────────────────┤
│  设计规范      │  TDesign Guidelines          │
│  设计语言      │  色彩/字体/间距/圆角规范      │
├───────────────┼─────────────────────────────┤
│  React        │  tdesign-react               │
│  Vue 3        │  tdesign-vue-next            │
│  Vue 2        │  tdesign-vue                 │
│  小程序        │  tdesign-miniprogram         │
│  Flutter      │  tdesign-flutter             │
│  UniApp       │  tdesign-uniapp              │
├───────────────┼─────────────────────────────┤
│  公共样式      │  tdesign-common              │
│  图标库        │  tdesign-icons               │
│  Starter 模板  │  tdesign-react-starter       │
└───────────────┴─────────────────────────────┘

核心架构

┌──────────────────────────────────┐
│           应用层 (App)            │
├──────────────────────────────────┤
│      组件层 (72 Components)       │
│  基础 / 布局 / 导航 / 输入 / 反馈  │
├──────────────────────────────────┤
│      公共层 (tdesign-common)      │
│  公共样式 / 工具函数 / 类型定义     │
├──────────────────────────────────┤
│      样式层 (CSS Variables)       │
│  Design Tokens / CSS 变量系统      │
└──────────────────────────────────┘

跨框架一致性

TDesign 的核心优势是跨框架一致性设计:

  • 统一 API 命名:React 和 Vue 版本的组件 API 命名保持一致
  • 统一设计规范:所有框架实现遵循相同的设计规范和交互模式
  • 统一 Design Tokens:跨框架共享 Design Token 变量
  • 统一视觉表现:不同框架渲染出的 UI 视觉完全一致

核心特性

  • 72 个基础 UI 组件:覆盖基础、布局、导航、输入、数据展示、消息反馈六大分类
  • 跨框架一致性:React / Vue / 小程序等版本保持统一的 API 和视觉表现
  • 企业级设计体系:腾讯内部多团队协作验证的设计系统
  • 暗色模式:内置暗色主题支持,一键切换
  • Design Token 主题定制:支持 CSS 变量扩展自定义主题样式
  • TypeScript 优先:完全基于 TypeScript 构建,提供精确的类型定义
  • 按需加载:支持 Webpack / Vite / Rollup tree-shaking
  • 国际化(i18n):支持多语言配置,通过 ConfigProvider 全局设置
  • React Hooks 实现:全部基于函数组件和 Hooks,无 Class 组件
  • 浏览器兼容:Edge ≥ 84、Firefox ≥ 83、Chrome ≥ 84、Safari ≥ 14.1

生态图

核心生态

生态组件说明
tdesign-reactReact 组件库(本体)
tdesign-vue-nextVue 3 组件库
tdesign-vueVue 2 组件库
tdesign-miniprogram微信小程序组件库
tdesign-mobile-reactReact 移动端组件库
tdesign-common跨框架公共样式和工具
tdesign-icons统一图标库

工具与模板

工具说明
tdesign-react-starter基于 Vite 的 React 入门模板
tdesign-icons独立图标库,按需引入
TDesign Figma KitFigma 设计资源包
tdesign-starter-cli项目脚手架 CLI 工具

社区生态

  • 作为腾讯官方开源项目,稳定性有保障
  • 跨框架一致性设计受到多框架团队青睐
  • 在腾讯系企业和外包项目中使用广泛

适用场景

  • 腾讯系技术栈项目:与腾讯内部技术栈保持一致,降低协作成本
  • 跨框架团队:团队同时使用 React 和 Vue,需要统一的组件 API 和视觉规范
  • 企业中后台系统:72 个组件覆盖全部后台需求,适合快速搭建
  • 多端产品:Web + 小程序 + 移动端需要统一设计语言
  • 外包项目:腾讯外包项目通常要求使用 TDesign 保持规范一致
  • 设计一致性要求高的项目:跨框架一致性确保不同端产品的统一体验
  • 传统企业数字化转型:稳定的设计系统和成熟的组件库降低技术风险

开发与工程化

开发流程

# 克隆仓库
git clone https://github.com/Tencent/tdesign-react.git
cd tdesign-react
 
# 安装依赖
npm install
 
# 启动开发服务器
npm run dev
 
# 运行测试
npm run test
 
# 构建
npm run build
 
# Lint 检查
npm run lint

使用 Starter 模板

# 使用官方 Starter 模板快速启动
# 基于 Vite + React + TypeScript + TDesign
git clone https://github.com/tencent/tdesign-react-starter.git
cd tdesign-react-starter
npm install
npm run dev

自定义主题

// 通过 CSS 变量覆盖默认主题
import 'tdesign-react/es/style/index.css'
 
// 在入口文件中覆盖 Design Tokens
const style = document.documentElement
style.style.setProperty('--td-brand-color', '#0052D9')
style.style.setProperty('--td-warning-color', '#E37318')
style.style.setProperty('--td-error-color', '#D54941')
style.style.setProperty('--td-success-color', '#2BA471')

按需引入图标

import { CloseIcon, CheckIcon, SearchIcon } from 'tdesign-icons-react'
 
function App() {
  return (
    <div>
      <CloseIcon />
      <CheckIcon />
      <SearchIcon />
    </div>
  )
}

CI/CD 集成

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '22'
      - run: npm ci
      - run: npm run lint
      - run: npm run typecheck
      - run: npm run test
      - run: npm run build

性能与安全

性能特点

  • Tree Shaking:支持 ES Module 按需加载,未使用的组件不会打包
  • CSS 变量主题:使用 CSS 变量实现主题定制,无运行时样式计算开销
  • 函数组件 + Hooks:全部基于函数组件,渲染性能优于 Class 组件
  • 虚拟滚动:Table、Select 等大数据组件支持虚拟滚动
  • 懒加载:支持 React.lazy 动态导入

性能优化建议

  • 使用按需引入,避免全量引入样式
  • 大表格数据使用 virtualScroll 开启虚拟滚动
  • 合理使用 React.memo 减少不必要的组件重渲染
  • 使用 useMemo / useCallback 缓存计算结果和回调函数
  • 弹窗类组件(Dialog、Drawer)使用动态导入减少初始包体积

安全注意事项

  • TDesign 组件不直接渲染 HTML 字符串,天然防御 XSS
  • dangerouslySetInnerHTML 使用时需对内容进行消毒处理
  • 表单组件支持自定义校验规则,建议使用前端 + 后端双重校验
  • 定期更新依赖,关注 tdesign-common 的安全补丁
  • 注意 @deprecated 标记的 API,及时迁移到新 API

技术对比

与同类组件库对比

特性TDesign ReactAnt DesignSemi DesignArco Design
GitHub Stars~1k90k+10.1k5.6k
组件数量7270+80+60+
跨框架一致性✅ 核心优势有限
Design Tokens✅ CSS 变量Less 变量3000+ TokensDesign Lab
暗色模式
AI 组件
小程序支持
Flutter 支持
维护公司腾讯蚂蚁集团字节/抖音字节跳动
每周发布
TypeScript
内部产品验证腾讯内部支付宝抖音飞书
Starter 模板

优势分析

  • 跨框架一致性独一无二:是目前唯一在 React、Vue、小程序、Flutter 间保持一致 API 和视觉的组件库
  • 腾讯出品:背靠腾讯,项目稳定性和持续性有保障
  • CSS 变量主题:使用 CSS 变量而非 Less/运行时变量,主题切换无性能开销
  • 每周发布节奏:更新频率极高,bug 修复和新特性跟进迅速
  • 多端覆盖:Web + 小程序 + Flutter + UniApp 全覆盖

劣势分析

  • GitHub Star 数量较低:社区认知度和影响力不及 Ant Design
  • 社区生态较小:第三方插件、教程和社区讨论资源相对较少
  • 缺少 AI 组件:目前没有内置 AI 专属组件
  • Design Lab 平台:缺少在线可视化主题定制平台

最佳实践

项目结构推荐

src/
├── components/           # 项目级公共组件
│   ├── PageHeader/
│   └── AppLayout/
├── pages/                # 页面组件
│   ├── Dashboard/
│   └── UserList/
├── hooks/                # 自定义 Hooks
├── config/               # 配置文件
│   └── theme.ts          # 主题配置
├── locales/              # 国际化文件
└── styles/               # 全局样式
    └── theme-override.css # 主题覆盖

主题定制最佳实践

// config/theme.ts
import { ConfigProvider } from 'tdesign-react'
import 'tdesign-react/es/style/index.css'
import zhConfig from 'tdesign-react/es/locale/zh_CN'
 
// CSS 变量覆盖
const themeOverrides = {
  '--td-brand-color': '#0052D9',
  '--td-brand-color-hover': '#3377E0',
  '--td-brand-color-active': '#0045C0',
}
 
function App() {
  return (
    <ConfigProvider
      globalConfig={zhConfig}
      style={{ ...themeOverrides } as React.CSSProperties}
    >
      <YourApplication />
    </ConfigProvider>
  )
}

表格最佳实践

import React, { useState, useCallback } from 'react'
import { Table, Space, Button, Popconfirm, Tag, MessagePlugin } from 'tdesign-react'
import { EditIcon, DeleteIcon } from 'tdesign-icons-react'
 
function UserTable({ data, loading }) {
  const columns = [
    { colKey: 'name', title: '姓名', width: 150 },
    { colKey: 'email', title: '邮箱', width: 200 },
    {
      colKey: 'role',
      title: '角色',
      cell: (_, { row }) => (
        <Tag theme="primary" variant="light">
          {row.role}
        </Tag>
      ),
    },
    {
      colKey: 'ops',
      title: '操作',
      width: 160,
      cell: (_, { row }) => (
        <Space>
          <Button theme="primary" variant="text" icon={<EditIcon />} onClick={() => handleEdit(row)} />
          <Popconfirm
            content="确认删除该用户?"
            onConfirm={() => handleDelete(row.id)}
          >
            <Button theme="danger" variant="text" icon={<DeleteIcon />} />
          </Popconfirm>
        </Space>
      ),
    },
  ]
 
  return (
    <Table
      rowKey="id"
      columns={columns}
      data={data}
      loading={loading}
      pagination={{ defaultPageSize: 20 }}
      stripe
      hover
    />
  )
}

常见陷阱

  • 样式引入顺序:确保 TDesign 样式在自定义样式之前引入,避免覆盖问题
  • ConfigProvider 位置ConfigProvider 应放在组件树的最顶层,确保全局生效
  • 图标引入方式:使用 tdesign-icons-react 按需引入,避免使用全量图标
  • TypeScript 严格模式:部分组件的泛型参数需要注意类型推断,必要时显式标注
  • 组件 API 一致性:React 版和 Vue 版 API 命名一致但实现方式不同(Hooks vs Composition API),不要混淆

技术局限与边界

已知限制

  1. 社区影响力有限:GitHub Star 数量(~1k)远低于 Ant Design(90k+),社区资源较少
  2. 无在线主题平台:不像 Arco Design 提供 Design Lab 在线定制,需要手动覆盖 CSS 变量
  3. 移动端 React 版仍在 Alphatdesign-mobile-react 处于 v0.23.0,尚未稳定
  4. 缺少 AI 组件:目前没有内置 AI 专属组件
  5. 文档国际化不足:高级文档和示例以中文为主

不适用场景

  • 需要大规模社区支持和丰富第三方插件的项目
  • 非腾讯技术栈且不需要跨框架一致性的项目
  • 纯移动端 React Native 项目(TDesign Mobile React 仍在 Alpha)
  • 对 AI 组件有强需求的项目(可考虑 Semi Design)

迁移注意事项

  • 从 Ant Design 迁移:API 命名差异较大(如 Table 的列定义方式不同),迁移成本较高
  • 从其他 TDesign 框架迁移:API 命名一致但实现方式不同,需要调整组件使用方式
  • CSS 变量主题与 Less 变量主题的覆盖方式完全不同,需要重新配置

学习资源

官方资源

其他框架

社区资源

2026 年现状

版本状态

  • 最新版本:v1.18.0(2026 年 6 月 26 日发布)
  • 更新频率:每周发布节奏(TDesign Weekly Release)
  • 总版本数:177+ releases
  • 总提交数:5,329+ commits

发展趋势

  • 非常活跃:每周发布节奏,2026 年 6 月仍保持高频更新
  • 腾讯团队维护:有专人维护,项目持续性有保障
  • 多框架同步:React / Vue / 小程序等版本保持同步迭代
  • 移动端发展tdesign-mobile-react 持续向稳定版推进
  • 社区 Star 数稳步增长,国内认可度提升中

近期更新(2026 年)

时间版本重点变更
2026-06-26v1.18.0Button 组件优化 outline/dashed 变体 hover 背景色;新增 TDesign 版本号导出
2026-06每周发布TDesign Weekly Release 保持高频迭代
持续tdesign-icons图标库同步更新,Node.js 20 支持计划于 2026 年移除

社区活跃度

  • GitHub Stars:~954(稳步增长)
  • Open Issues:119 个
  • Open PRs:58 个
  • Forks:366
  • Watching:20
  • NPM 下载量:稳定

选型建议

  • 强烈推荐:腾讯系项目、跨框架团队(React + Vue)、多端产品
  • 适合:企业中后台系统、外包项目、设计一致性要求高的项目
  • 对比选择:与 Ant Design 相比,社区较小但跨框架一致性优势明显;与 Semi Design 相比,缺少 AI 组件但多端覆盖更全面