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
| 名称 | 类型 | 说明 |
|---|---|---|
isConnected | Ref<boolean> | SSE 连接状态 |
connectionState | Ref<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()。
