1. isRef()
- isRef() 用于检查某个值是否为Ref对象引用,主要用于在ts中缩减类型范围
- 语法:
function isRef<T>(r: Ref<T> | unknown): r is Ref<T>
2. unref()
-
unref 接收一个参数, 并按照下列方式进行执行:
- 如果参数是 ref,则返回内部值
- 如果参数不是ref, 返回参数本身
- unref 是val = isRef(val) ? val.value : val 计算的一个语法糖。
3. toRef()
-
描述
- toRef基于响应式对象上的一个属性,创建一个对应的 ref
-
特点
-
toRef创建的 ref 与其源属性保持同步 - toRef改变源属性的值将更新 ref 的值,反之亦然。 - 当 toRef 与组件 props 结合使用时,关于禁止对 props 做出更改的限制依然有效。尝试将新的值传递给 ref 等效于尝试直接更改 props
-
使用场景
toRef一般用来操作reactive中的单个属性- 在处理props时, 即使源属性当前不存在,toRef() 也会返回一个可用的 ref。(可以为非props和readonly对象这样的响应式对象设置意外值或默认值, 防止报错)
4. toRefs()
-
概念描述:
- toRefs将一个响应式对象转换为一个普通对象,这个普通对象的每个属性都是指向源对象相应属性的 ref。
-
特点
- toRefs创建出来的普通对象中的每个单独的 ref 都是使用 toRef() 创建的。
function toRefs<T extends object>(
object: T
): {
[K in keyof T]: ToRef<T[K]>
}
type ToRef = T extends Ref ? T : Ref<T>
-
使用toRefs,消费者组件可以解构/展开返回的对象而不会失去响应性
-
应用场景: 当从组合式函数中返回响应式对象时,toRefs 相当有用。(通常配合
reactive使用) -
注意点:
- toRefs 在调用时只会为源对象上可以枚举的属性创建 ref。如果要为可能还不存在的属性创建 ref,请改用 toRef
5. isProxy()
- isProxy()用于检查一个对象是否是由
reactive()、readonly()、shallowReactive()或shallowReadonly()创建的代理
6. isReactive()
- isReactive()检查一个对象是否是由 reactive() 或 shallowReactive() 创建的代理。
7. isReadonly()
- isReadonly()检查一个对象是否是由 readonly() 或 shallowReadonly() 创建的代理。