Skip to content

toRef ​

类别
导出体积
180 B
上次更改
4 months ago

将值、ref 或 getter 规范化为 ref 或 computed。

用法 ​

ts
import { 
toRef
} from '@vueuse/core'
const
foo
=
ref
('hi')
const
a
=
toRef
(0) // Ref<number>
const
b
=
toRef
(
foo
) // Ref<string>
const
c
=
toRef
(() => 'hi') // ComputedRef<string>

与 Vue 的 toRef 的区别 ​

VueUse 的 toRef 与 vue 包中的 Vue toRef 不同。

VueUse toRef ​

  • 接受 值、ref 或 getter
  • 返回:
    • 原始值的 ref
    • 现有 ref 的 ref
    • getter 函数的 computed
  • 不接受 object + key
  • Getter 总是产生只读的 computed 值

Vue toRef ​

  • 仅接受:
    • 响应式对象 + 属性键,或
    • 现有的 ref
  • 生成一个链接到基础响应式对象的 可写 ref
  • 不接受原始值
  • 不接受 getter 函数

总结 ​

行为VueUse toRefVue toRef
接受原始值✔️❌
接受 getter✔️ (computed)❌
接受现有 ref✔️✔️
接受 object + key❌✔️
可写✔️ (getter 除外)✔️
用途规范化为 ref/computed绑定到响应式对象

类型声明 ​

ts
/**
 * 将值、ref 或 getter 规范化为 `ref` 或 `computed`。
 */
export declare function 
toRef
<
T
>(
r
: () =>
T
):
Readonly
<
Ref
<
T
>>
export declare function
toRef
<
T
>(
r
:
ComputedRef
<
T
>):
ComputedRef
<
T
>
export declare function
toRef
<
T
>(
r
:
MaybeRefOrGetter
<
T
>):
Ref
<
T
>
export declare function
toRef
<
T
>(
r
:
T
):
Ref
<
T
>
export declare function
toRef
<
T
extends object,
K
extends keyof
T
>(
object
:
T
,
key
:
K
,
):
ToRef
<
T
[
K
]>
export declare function
toRef
<
T
extends object,
K
extends keyof
T
>(
object
:
T
,
key
:
K
,
defaultValue
:
T
[
K
],
):
ToRef
<
Exclude
<
T
[
K
], undefined>>

源码 ​

源码 • 文档

贡献者 ​

Anthony Fu
一纸忘忧
一纸忘忧
Vida Xie
ntnyq
Dayouzi
IlyaL
Anthony Fu

更新日志 ​

971b2 - feat(shared)!: drop some deprecated apis (#5010)
5e046 - feat!: drop CJS build, now it's ESM-only (#4581)
7432f - feat(types): deprecate MaybeRef and MaybeRefOrGetter in favor of Vue's native (#4636)
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)