Vue 3 工程提效:用 VueUse 组合式工具库落地暗色、本地存储与防抖
test12026-10-084 次阅读
为什么直接引入 VueUse
VueUse 是一组 SSR 友好的组合式函数集合,覆盖浏览器、传感器、网络、状态等上百个场景。它不绑定框架实现细节,按需引入,能替掉大量样板代码。
1 useDark 一行暗色模式
useDark 自动在 html 上加 class 并和系统的配色偏好联动,useToggle 负责切换。
import { useDark, useToggle } from "@vueuse/core";
const isDark = useDark();
const toggleDark = useToggle(isDark);
// 模板里 <button @click="toggleDark()">切换</button>
2 useStorage 把状态持久化
用 useStorage 声明的响应式变量会同步写入 localStorage,刷新页面后自动恢复,省去手写 watch 与读写。
import { useStorage } from "@vueuse/core";
const token = useStorage("token", "");
const settings = useStorage("settings", { theme: "light", pageSize: 20 });
// token.value 的改动会自动落盘
3 useFetch 接管数据请求
相比手写 axios,useFetch 直接返回响应式的 data、error 与 loading,并自动在组件卸载时忽略过期结果。
import { useFetch } from "@vueuse/core";
const { data, error, isFetching, execute } = useFetch(
"/api/user",
{ refetch: true }
).json();
4 useDebounceFn 与 onClickOutside
搜索框防抖、点击外部关闭弹层这类交互,VueUse 都给了现成封装。
import { onClickOutside, useDebounceFn } from "@vueuse/core";
import { ref } from "vue";
const panel = ref(null);
const search = ref("");
const onClose = () => { /* 关闭面板 */ };
onClickOutside(panel, onClose);
const runSearch = useDebounceFn(() => {
// 调接口
}, 300);
体积与注意事项
- VueUse 支持按需 tree-shaking,只打包用到的函数,不会整体进场。
- 涉及浏览器的函数(如 onClickOutside)在服务端渲染时要放在 onMounted 或客户端守卫内。
- 函数默认依赖 Vue 3,不要和 Vue 2 项目混用。
T
test1
文章作者
为什么直接引入 VueUse VueUse 是一组 SSR 友好的组合式函数集合,覆盖浏览器、传感器、网络、状态等上百...
- 分类
- 技术
- 发布时间
- 2026-10-08
- 字数
- 约 1321 字
- 阅读
- 4 次
