expect(dummyY).toBe(5)
})
- test('toRefs should warn on plain object', () => {
- toRefs({})
- expect(`toRefs() expects a reactive object`).toHaveBeenWarned()
- })
-
- test('toRefs should warn on plain array', () => {
- toRefs([])
- expect(`toRefs() expects a reactive object`).toHaveBeenWarned()
- })
-
test('toRefs reactive array', () => {
const arr = reactive(['a', 'b', 'c'])
const refs = toRefs(arr)
import {
type Builtin,
type ShallowReactiveMarker,
- isProxy,
isReactive,
isReadonly,
isShallow,
} from './reactive'
import type { ComputedRef, WritableComputedRef } from './computed'
import { ReactiveFlags, TrackOpTypes, TriggerOpTypes } from './constants'
-import { warn } from './warning'
declare const RefSymbol: unique symbol
export declare const RawSymbol: unique symbol
* @see {@link https://vuejs.org/api/reactivity-utilities.html#torefs}
*/
export function toRefs<T extends object>(object: T): ToRefs<T> {
- if (__DEV__ && !isProxy(object)) {
- warn(`toRefs() expects a reactive object but received a plain one.`)
- }
const ret: any = isArray(object) ? new Array(object.length) : {}
for (const key in object) {
ret[key] = propertyToRef(object, key)