Skip to content

全局 API

useTheme

主题相关的组合式函数,用于处理主题配置和变量解析。

导入

js
import { useTheme } from '@/components/theme/ThemeDefine';

返回值

theme

当前的主题配置对象。

resolveThemeSize(inValue?: string|number, defaultValue?: string|number) : string|undefined

解析主题尺寸值,支持从主题配置中获取尺寸定义。

参数说明类型必填默认值
inValue输入的尺寸值string | number-
defaultValue默认尺寸值string | number-

返回值:解析后的尺寸字符串,如果无法解析则返回undefined。

resolveThemeColor(inValue?: string, defaultValue?: string) : string|undefined

解析主题颜色值,支持从主题配置中获取颜色定义。

参数说明类型必填默认值
inValue输入的颜色值string-
defaultValue默认颜色值string-

返回值:解析后的颜色字符串,如果无法解析则返回undefined。

resolveThemeSizes<T>(defaults: T)

批量解析主题尺寸值。

参数说明类型必填默认值
defaults默认尺寸配置对象T-

返回值:解析后的尺寸配置对象。

resolveThemeColors<T>(defaults: T)

批量解析主题颜色值。

参数说明类型必填默认值
defaults默认颜色配置对象T-

返回值:解析后的颜色配置对象。

getColor(key: string, defaultValue?: string)

获取主题颜色配置。

参数说明类型必填默认值
key颜色键名,支持 type.key 格式string-
defaultValue默认颜色值string-

返回值:颜色值或默认值。

getSize(key: string, defaultValue?: string|number)

获取主题尺寸配置。

参数说明类型必填默认值
key尺寸键名,支持 type.key 格式string-
defaultValue默认尺寸值string | number-

返回值:解析后的尺寸值或默认值。

getText(key: string, defaultValue: Record<string, string>)

获取主题文本配置。

参数说明类型必填默认值
key文本配置键名string-
defaultValue默认文本配置Record<string, string>-

返回值:文本配置对象。

getVar<T>(key: string, defaultValue: T) : T

获取主题变量值。

参数说明类型必填默认值
key变量键名string-
defaultValue默认变量值T-

返回值:变量值或默认值。

getVars<T extends Record<string, string|number|boolean>>(defaults: T)

批量获取主题变量值。

参数说明类型必填默认值
defaults默认变量配置对象T-

返回值:变量配置对象。

getColors<T extends Record<string, string|undefined>>(defaults: T)

批量获取主题颜色值。

参数说明类型必填默认值
defaults默认颜色配置对象T-

返回值:颜色配置对象。

useThemeStyle(style: Record<string, any>)

创建响应式的主题样式对象。

参数说明类型必填默认值
style样式对象,支持动态主题变量Record<string, any>-

返回值:计算属性,包含解析后的样式对象。

useThemeStyles<T extends Record<string, Record<string, any>>>(style: Record<string, Record<string, any>>)

批量创建响应式的主题样式对象。

参数说明类型必填默认值
style多个样式对象的集合Record<string, Record<string, any>>-

返回值:计算属性集合,包含多个解析后的样式对象。

示例

js
const themeContext = useTheme();

// 解析尺寸
const size = computed(() => themeContext resolveThemeSize('small', 16));
// 解析颜色
const color = computed(() => themeContext.resolveThemeColor('primary', '#1989fa'));

// 创建响应式样式
const myStyle = themeContext.useThemeStyle({
  color: DynamicColor('primary'),
  fontSize: DynamicSize('fontSize.small'),
});

configTheme

配置主题变量,建议在App.vue中调用。

导入

js
import { configTheme } from '@/components/theme/ThemeDefine'

函数签名

typescript
function configTheme(cb: (defaultTheme: ThemeConfig) => ThemeConfig)

参数

参数说明类型必填默认值
cb回调函数,参数为默认主题配置,返回值为新的主题配置(defaultTheme: ThemeConfig) => ThemeConfig-

示例

js
configTheme((defaultTheme) => {
  return {
    ...defaultTheme,
    colorConfigs: {
      ...defaultTheme.colorConfigs,
      default: {
        ...defaultTheme.colorConfigs.default,
        primary: '#ff6700',
        success: '#52c41a'
      }
    }
  };
});

configDefaultSizeUnit

配置默认的尺寸单位。

导入

js
import { configDefaultSizeUnit } from '@/components/theme/ThemeDefine'

函数签名

typescript
function configDefaultSizeUnit(unit: string)

参数

参数说明类型必填默认值
unit尺寸单位,如 'px'、'rpx' 等string-

示例

js
// 设置默认尺寸单位为 rpx
configDefaultSizeUnit('rpx');

configIconMap

设置 Icon 组件的图标名称映射。

导入

js
import IconUtils from '@/components/basic/IconUtils'

函数签名

typescript
function configIconMap(map: Record<string, string>)

参数

参数说明类型必填默认值
map图标映射对象,key是图标的名字,value可以是多种格式Record<string, string>-

说明

value 可以是以下几种情况:

  • 是一个 iconfont:name 字符,则会渲染为字体形式的图标,通过 : 分割,前面是字体名称,后面是图标名称
  • 是一个 data:*** 或者 http/https URL,则会尝试使用 Image 渲染为图片
  • 是一个 <svg 开头的字符串,会渲染为 svg
  • 否则,作为默认字体 iconfont 渲染为字体形式的图标

示例

js
IconUtils.configIconMap({
  // 字体图标
  'search': 'iconfont:search',
  'home': 'my-icons:home',
  
  // 图片图标
  'logo': 'https://example.com/logo.png',
  
  // SVG图标
  'arrow-right': '<svg viewBox="0 0 24 24"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"></path></svg>'
});