组合式函数需显式传参,不支持自动获取上下文;推荐用 toValue 统一处理各类参数;多配置项建议用对象参数+withDefaults;响应式参数需用 watch/watchEffect 监听并清理。

参数必须显式传入,不能自动获取
组合式函数本身不是组件,没有 props、context 或 this 上下文。它不参与组件生命周期,也不感知调用它的组件状态。所以你不能在函数内部调用 defineProps(),也不能依赖全局变量或隐式上下文去“拿到”配置。所有需要的参数都得由组件主动传进来——这是唯一可靠的方式。
支持多种参数类型,推荐用 toValue 统一处理
实际业务中,参数可能是普通值、ref、computed、getter 函数,甚至 reactive 对象。为兼容不同来源,建议在组合式函数内部统一用 toValue() 处理:
- 传入 ref 或 computed:toValue 自动取 .value
- 传入普通值或函数:toValue 直接返回原值或执行结果
- 避免手动判断 .value 是否存在,减少出错可能
常用配置模式:对象参数 + 默认值
当配置项较多时,用单个 options 对象传参更清晰、可扩展性更强:
将静态 Vue 页面(index.vue)改造为动态页面(Custom.vue);稿源仅限 index.vue、其引用的 CSS 与资源路径,禁止参考仓库内其他文件。Invoke when user wants to transform a static Vue page into a dynamic data-driven page with Element UI components.
- 用 withDefaults 定义默认配置,避免每个字段都写 ?? 或 ||
- 配合解构 + toRefs 或 toValue,安全读取响应式字段
- 例如:useFetch({ url: '/api/user', method: 'GET', delay: 300 })
响应式参数需配合 watch 或 watchEffect 监听变化
如果传入的是 ref 或 reactive 数据,且逻辑需要响应其更新(比如搜索关键词变了要重新请求),就不能只读一次初始值:
立即学习“前端免费学习笔记(深入)”;
- 用 watchEffect 自动追踪 toValue 结果的变化
- 或用 watch 显式监听某个 ref,并在回调里执行副作用
- 注意清理:在 onUnmounted 中停止监听,防止内存泄漏

















