Skip to content

基础使用

useDict 才是实际的字典数据获取方法, 使用方式如下:

ts
const code = 'DICT_STYLES';
const { loading, data, dictMap } = useDict(code);

演示

基础使用

loading

手动获取

字段默认是主动发起请求获取数据, 可以通过设置immediatefalse禁止主动获取数据, 再合适时机调用load方法手动获取字典数据。

ts
<script lang="tsx" setup>
const code = 'DICT_FIRST';
const { loading, data, dictMap, load } = useDict(codes, {
  immediate: false,
});
</script>

<template>
  // some code
  <ElButton type="primary" @click="load">获取字典</ElButton>
</template>
loading

查询多个字典

useDict 支持查询多个字典, 使用方式如下:

ts
// 使用 as const 才会把数组当作 只读元组(readonly tuple)
const codes = ['DICT_STYLES', 'DICT_REASON'] as const;

const { loading, data, dictMap } = useDict(codes);
loading

TIP

useDict也支持数组的字典编码, 在使用数组时, 建议使用as const, 从而使用dictMap获取具一字典数据时有响应的字典编码提示。

合并请求

useDict在多次使用获取字典数据时, 同一命名空间的会自动合并请求, 如下面代码中, DICT_OTHER[DICT_STYLES, DICT_REASON]会被合并请求。

DICT_EXTERNAL是属于命名空间 external 的字典, 会与默认命名空间分开单独一个请求。

ts
// 内部字典
const code = 'DICT_OTHER';
const codes = ['DICT_STYLES', 'DICT_REASON'] as const;
const { loading, data, dictMap } = useDict(codes);
const {
  loading: loadingForOther,
  data: dataForOther,
  dictMap:
  dictMapForOther
} = useDict(code);

// 外部字典
const codeExternal = 'DICT_EXTERNAL';
const {
  loading: loadingForExternal,
  data: dataForExternal,
  dictMap: dictMapForExternal
} = useDict(codeExternal, {
  namespace: 'external',
});

TIP

默认合并请求的间隔为25ms

loading