作用
将值、refs 或 getters 规范化为值。这与 unref() 类似,不同的是此函数也会规范化 getter 函数。如果参数是一个 getter,它将会被调用并且返回它的返回值。
简单来说,toValue
函数的目的是将传入的值规范化为一个普通的值,不管传入的是普通值、ref
对象,还是一个返回值的 getter
函数。它会自动识别你传入的是什么,并且始终返回对应的值。
- 普通值:直接返回这个值。
ref
对象:返回ref
的.value
。getter
函数:调用这个函数,并返回其结果。
toValue(1) // 返回 1,因为传入的是普通值
toValue(ref(1)) // 返回 1,因为传入的是 `ref` 对象,它的 `.value` 是 1
toValue(() => 1) // 返回 1,因为传入的是一个返回 1 的函数,函数被调用并返回 1
应用
toValue
的主要作用是在处理未知类型输入时统一行为。比如,你编写一个可以处理各种输入类型的函数,无论是值、ref
,还是 getter
,你都希望得到一个最终的值,而不需要关心输入的具体类型。这时 toValue
就派上用场了。