Vue3 组合式函数设计:复用逻辑之前先定义副作用 Vue3 组合式函数设计复用逻辑之前先定义副作用一、组合式函数不是万能抽屉Vue3 Composition API 让逻辑复用更自然但也容易被滥用。很多项目把请求、状态、事件监听、路由跳转、缓存和副作用都塞进一个useXxx。短期看复用方便长期看很难测试和维护。组合式函数设计的关键是先定义它管理什么状态、产生什么副作用、由谁负责清理。复用逻辑之前要先把边界讲清楚。二、先区分纯状态和副作用flowchart TD A[组合式函数] -- B[纯状态计算] A -- C[请求副作用] A -- D[DOM/事件副作用] A -- E[路由副作用]纯状态计算适合封装成小函数副作用则要谨慎。比如usePagination可以只管理页码和大小useUserList如果直接请求接口就要处理 loading、error、取消请求和组件卸载。一个组合式函数最好只承担一类副作用。否则调用者很难预测它会做什么。三、接口要让调用者可控export function useAsyncStateT(loader: () PromiseT) { const data refT | null(null) const loading ref(false) const error refError | null(null) async function run() { loading.value true try { data.value await loader() } catch (e) { error.value e as Error } finally { loading.value false } } return { data, loading, error, run } }这个接口没有自动请求调用者决定什么时候执行。自动执行不是不能做但要通过参数明确。composable_design: expose_run_function: true support_manual_trigger: true cleanup_side_effects: required avoid_hidden_router_change: true隐藏路由跳转、隐藏全局状态写入是组合式函数最容易制造惊喜的地方。四、测试要覆盖生命周期组合式函数如果包含事件监听、定时器、请求取消就要测试组件卸载后的清理行为。只测返回值是不够的。还要控制命名。useUser太宽泛调用者不知道它是读用户、改用户还是监听用户变化。更具体的名字能减少误用。组合式函数还要考虑并发调用。同一个页面多次调用useAsyncState时状态是否共享缓存是否复用错误是否互相影响都要明确。默认每次调用独立通常比隐式共享更安全。type UseRequestOptions { immediate?: boolean cacheKey?: string abortOnUnmount?: boolean }如果支持缓存就要让调用者显式传cacheKey。没有 key 的缓存很容易串数据尤其是在用户切换、路由变化或参数变化时。还要处理请求竞态。用户快速切换筛选条件时旧请求可能晚于新请求返回。组合式函数可以用请求序号或 AbortController确保旧结果不会覆盖新状态。这些细节看起来琐碎但它们决定组合式逻辑是否能在真实页面里长期稳定。五、总结Vue3 组合式函数设计要先区分纯状态和副作用让调用者知道它会请求什么、监听什么、清理什么。可复用不是把代码搬到useXxx里而是让边界更清楚。

相关新闻

最新新闻

2026年AI编程代理Codex实战指南:从安装到精通,重塑开发工作流

2026年AI编程代理Codex实战指南:从安装到精通,重塑开发工作流

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你还在用传统方式写代码,每次遇到复杂逻辑都要手动查文档、调试、重构,那么你可能已经落后了。2026年的开…

2026/7/5 2:32:16
AI科研助手codex-claude-academic-skills:从文献拆解到论文写作的全流程实战指南

AI科研助手codex-claude-academic-skills:从文献拆解到论文写作的全流程实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你还在用“帮我写论文”这种笼统的指令来使用 Claude Code 或 Codex,那可能只发挥了它们 10% 的潜力。今天要介绍的是…

2026/7/5 2:32:16
Qt Quick 常用控件入门:Window、Button、CheckBox 与 RadioButton

Qt Quick 常用控件入门:Window、Button、CheckBox 与 RadioButton

Qt Quick 常用控件入门:Window、Control、Button、CheckBox 与 RadioButton 2. 本节学习目标 本节主要学习以下内容: Window 和 ApplicationWindow 的作用区别Qt Quick 控件的基本继承关系Control 在控件体系中的作用Button 的常用属性、信号和自定义样式…

2026/7/5 2:32:16
基于51/STM32单片机分贝仪检测 噪音等级声音采集电子成品套件21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于51/STM32单片机分贝仪检测 噪音等级声音采集电子成品套件21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于51/STM32单片机分贝仪检测 噪音等级声音采集电子成品套件21(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 特别说明 噪音等级划分:噪声在0~120dB的范围内分为三级 ①Ⅰ级(30~59dB&#xff0…

2026/7/5 2:32:16
由罗技 K380 键盘 FN 键模式切换引发的血案

由罗技 K380 键盘 FN 键模式切换引发的血案

一、问题起源:为什么 K380 需要手动切 FN 模式 罗技 K380 是一款便携蓝牙键盘,默认情况下 F1-F12 被映射为多媒体功能(音量、亮度、播放控制等),按真正的 F1-F12 需要 Fn Esc 组合切换,但这个货天生没有这…

2026/7/5 2:32:16
微调LLM前你需要了解的一些概念2--多头注意力机制

微调LLM前你需要了解的一些概念2--多头注意力机制

1. 先区分两个概念:多头和多层Multi-Head Attention 和多层 Transformer Block 不是一回事。一句话区分:Multi-Head Attention:同一层里,多个 attention head 并行看上下文。 多层 Transformer Block:很多层 block 串行…

2026/7/5 2:27:16

月新闻