组合式函数
命名
组合式函数约定用驼峰命名法命名,并以“use”作为开头。
unref
尝试解包一个 ref。如果传入的是一个 ref,它将返回 ref.value;如果是普通值或 reactive 对象,则直接返回该值本身。
toValue
类似于 unref,但它更加通用,不仅可以解包 ref,还可以处理其他类型的响应式对象(如 computed)。对于 reactive 对象,它不会递归解包内部的 ref。
特性/函数 | unref | toValue |
---|---|---|
解包 ref | 是 | 是 |
解包 computed | 否 | 是 |
解包 reactive | 否(直接返回 reactive 对象) | 否(直接返回 reactive 对象) |
处理普通值 | 是 | 是 |
内置库 | 是(Vue 核心库) | 否(需从 @vue/reactivity 导入) |
适用场景 | 简单解包需求,适用于 ref | 更复杂的解包需求,适用于 ref 和 computed |
toValue() 是一个在 3.3 版本中新增的 API。它的设计目的是将 ref 或 getter 规范化为值。如果参数是 ref,它会返回 ref 的值;如果参数是函数,它会调用函数并返回其返回值。否则,它会原样返回参数。它的工作方式类似于 unref(),但对函数有特殊处理。
维持响应式
从组合式函数返回一个响应式对象会导致在对象解构过程中丢失与组合式函数内状态的响应性连接。与之相反,ref 则可以维持这一响应性连接。
使用限制
组合式函数只能在