在 @rc-component/util 的 genStyleUtils 中新增了 extraCssVarPrefixCls 选项,允许为多个 prefixCls 注册 CSS 变量。当前实现需要为每个 scope 调用一次 useCSSVarRegister,导致:
- 代码冗余:多个 scope 会生成相同值的 CSS 变量
- 性能开销:大量 DOM 操作会带来性能问题
.xxx-hashId { --btn-color: #1890ff; }
.xxx-hashId.ant-btn-compact { --btn-color: #1890ff; }
.xxx-hashId.ant-btn-large { --btn-color: #1890ff; }支持在 useCSSVarRegister 的 config 中传入多个 scope,生成逗号分隔的选择器:
.xxx-hashId, .xxx-hashId.ant-btn-compact, .xxx-hashId.ant-btn-large {
--btn-color: #1890ff;
}// 当前 API
useCSSVarRegister(
{ ..., scope: 'ant-btn-compact' }, // 单个 scope
tokenGenerator
);
// 建议的 API(兼容现有)
useCSSVarRegister(
{ ..., scope: 'ant-btn-compact' }, // 仍然支持单个 scope
tokenGenerator
);
useCSSVarRegister(
{ ..., scopes: ['ant-btn', 'ant-btn-compact', 'ant-btn-large'] }, // 新增支持数组的 scopes
tokenGenerator
);lib/hooks/useCSSVarRegister.js- 接受scopes数组并修改serializeCSSVar生成逻辑lib/util/css-variables.js- 修改serializeCSSVar支持多个 scope 生成逗号分隔选择器- 对应的 TypeScript 类型定义文件
- 保持向后兼容,
scope仍然可用 - 这属于性能优化,不是破坏性变更