静态消费(如 less)当你需要非 React 生命周期消费 Token 变量时,可以通过静态方法 getDesignToken 将其导出:
jsximport { theme } from 'antd';
const { getDesignToken } = theme;
const globalToken = getDesignToken();getDesignToken 和 ConfigProvider 一样,支持传入 theme 属性,用于获取指定主题的 Design Token。
tsximport type { ThemeConfig } from 'antd';import { theme } from 'antd';import { createRoot } from 'react-dom/client';
const { getDesignToken, useToken } = theme;
const config: ThemeConfig = { token: { colorPrimary: '#1890ff', },};
// 通过静态方法获取const globalToken = getDesignToken(config);
// 通过 hook 获取const App = () => { const { token } = useToken(); return null;};
// 渲染示意createRoot(document.getElementById('#app')).render(
jsx{ loader: "less-loader", options: { lessOptions: { modifyVars: mapToken, }, },}兼容包提供了变量转换方法用于转成 v4 的 less 变量,如需使用点击此处查看详情。
调试主题我们提供了帮助用户调试主题的工具:主题编辑器
你可以使用此工具自由地修改 Design Token,以达到你对主题的期望。
基本概念在 Design Token 中我们提供了一套更加贴合设计的三层结构,将 Design Token 拆解为 Seed Token、Map Token 和 Alias Token 三部分。这三组 Token 并不是简单的分组,而是一个三层的派生关系,由 Seed Token 派生 Map Token,再由 Map Token 派生 Alias Token。在大部分情况下,使用 Seed Token 就可以满足定制主题的需要。但如果您需要更高程度的主题定制,您需要了解 antd 中 Design Token 的生命周期。
演变过程
基础变量(Seed Token)Seed Token 意味着所有设计意图的起源。比如我们可以通过改变 colorPrimary 来改变主题色,antd 内部的算法会自动的根据 Seed Token 计算出对应的一系列颜色并应用:
tsxconst theme = { token: { colorPrimary: '#1890ff', },};梯度变量(Map Token)Map Token 是基于 Seed 派生的梯度变量。定制 Map Token 推荐通过 theme.algorithm 来实现,这样可以保证 Map Token 之间的梯度关系。也可以通过 theme.token 覆盖,用于单独修改一些 map token 的值。
tsxconst theme = { token: { colorPrimaryBg: '#e6f7ff', },};别名变量(Alias Token)Alias Token 用于批量控制某些共性组件的样式,基本上是 Map Token 别名,或者特殊处理过的 Map Token。
tsxconst theme = { token: { colorLink: '#1890ff', },};基本算法(algorithm)基本算法用于将 Seed Token 展开为 Map Token,比如由一个基本色算出一个梯度色板,或者由一个基本的圆角算出各种大小的圆角。算法可以单独使用,也可以任意地组合使用,比如可以将暗色算法和紧凑算法组合使用,得到一个暗色和紧凑相结合的主题。
tsximport { theme } from 'antd';
const { darkAlgorithm, compactAlgorithm } = theme;
const theme = { algorithm: [darkAlgorithm, compactAlgorithm],};APITheme属性说明类型默认值版本token用于修改 Design TokenAliasToken-inherit继承上层 ConfigProvider 中配置的主题。booleantruealgorithm用于修改 Seed Token 到 Map Token 的算法(token: SeedToken) => MapToken | ((token: SeedToken) => MapToken)[]defaultAlgorithmcomponents用于修改各个组件的 Component Token 以及覆盖该组件消费的 Alias TokenComponentsConfig-cssVarCSS 变量配置cssVar-hashed将样式添加至 hash className 上booleantruezeroRuntime开启零运行时模式,不会在运行时产生样式,需要手动引入 CSS 文件booleanfalse6.0.0ComponentsConfig属性说明类型默认值Component (可以是任意 antd 组件名,如 Button)用于修改 Component Token 以及覆盖该组件消费的 Alias TokenComponentToken & AliasToken & { algorithm: boolean | (token: SeedToken) => MapToken | ((token: SeedToken) => MapToken)[]}-组件级别的 algorithm 默认为 false,此时组件 Token 仅仅会覆盖该组件使用的 token,不会进行派生计算。设置为 true 时会继承当前全局算法;也可以和全局的 algorithm 一样传入一个或多个算法,这将会针对该组件覆盖全局的算法。
cssVar属性说明类型默认值版本prefixCSS 变量的前缀,默认与 ConfigProvider 上配置的 prefixCls 相同stringantkey当前主题的唯一识别 key,默认用 useId 填充stringuseId in React 18SeedToken