Skip to content

useDictSync 字典同步

通过 SSE 监听后端字典变更,自动清除本地缓存并触发回调。

基础用法

typescript
import { useDictSync } from "@/composables";

const dictSync = useDictSync();

// 初始化连接(应用启动时调用一次)
dictSync.initialize();

// 监听字典变更
const unsubscribe = dictSync.onDictChange((message) => {
  console.log("字典已更新:", message.dictCode);
});

// 取消监听
unsubscribe();

// 清理连接(应用退出时调用)
dictSync.cleanup();

在应用中集成

vue
<script setup lang="ts">
import { useDictSync } from "@/composables";

const dictSync = useDictSync();

onMounted(() => {
  dictSync.initialize();
});

onUnmounted(() => {
  dictSync.cleanup();
});
</script>

监听特定字典

typescript
const unsubscribe = dictSync.onDictChange((message) => {
  if (message.dictCode === "gender") {
    console.log("性别字典已更新");
  }
});

onUnmounted(() => {
  unsubscribe();
});

API

名称类型说明
isConnectedRef<boolean>SSE 连接状态
connectionStateRef<string>连接状态详情(connecting/connected/disconnected)
initialize() => void初始化 SSE 连接并订阅字典事件
cleanup() => void关闭连接并清理资源
onDictChange(callback) => () => void注册字典变更回调,返回取消注册函数

回调参数类型:

typescript
interface DictChangeMessage {
  dictCode: string;  // 字典编码
  timestamp: number; // 时间戳
}

环境变量

.env 中配置 SSE 端点,未配置则自动跳过初始化:

bash
VITE_APP_SSE_ENDPOINT=http://localhost:8080/api/v1/sse/connect

单例模式

useDictSync 全局共享一个连接,多次调用返回同一实例。组件卸载时记得取消回调,应用退出时调用 cleanup()

基于 MIT 许可发布 · 如需部署协助或二开定制,请查看 支持与合作