⬅️ Back to Table of Contents
📄 index.ts
📊 Analysis Summary
Metric |
Count |
🔧 Functions |
1 |
📦 Imports |
5 |
📊 Variables & Constants |
1 |
🟢 Vue Composition API |
2 |
📚 Table of Contents
🛠️ File Location:
📂 packages/shared/toReactive/index.ts
📦 Imports
Name |
Source |
MaybeRef |
vue |
UnwrapNestedRefs |
vue |
isRef |
vue |
reactive |
vue |
unref |
vue |
Variables & Constants
Name |
Type |
Kind |
Value |
Exported |
proxy |
{} |
const |
`new Proxy({}, { |
|
get(_, p, receiver) { |
|
|
|
|
return unref(Reflect.get(objectRef.value, p, receiver)) |
|
|
|
|
}, |
|
|
|
|
set(_, p, value) { |
|
|
|
|
if (isRef((objectRef.value as any)[p]) && !isRef(value)) |
|
|
|
|
(objectRef.value as any)[p].value = value |
|
|
|
|
else |
|
|
|
|
(objectRef.value as any)[p] = value |
|
|
|
|
return true |
|
|
|
|
}, |
|
|
|
|
deleteProperty(_, p) { |
|
|
|
|
return Reflect.deleteProperty(objectRef.value, p) |
|
|
|
|
}, |
|
|
|
|
has(_, p) { |
|
|
|
|
return Reflect.has(objectRef.value, p) |
|
|
|
|
}, |
|
|
|
|
ownKeys() { |
|
|
|
|
return Object.keys(objectRef.value) |
|
|
|
|
}, |
|
|
|
|
getOwnPropertyDescriptor() { |
|
|
|
|
return { |
|
|
|
|
enumerable: true, |
|
|
|
|
configurable: true, |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
})` |
✗ |
|
|
|
Vue Composition API
Name |
Type |
Reactive Variables |
Composables |
reactive |
reactive |
none |
none |
reactive |
reactive |
none |
none |
Functions
toReactive(objectRef: MaybeRef<T>): UnwrapNestedRefs<T>
Code
export function toReactive<T extends object>(
objectRef: MaybeRef<T>,
): UnwrapNestedRefs<T> {
if (!isRef(objectRef))
return reactive(objectRef)
const proxy = new Proxy({}, {
get(_, p, receiver) {
return unref(Reflect.get(objectRef.value, p, receiver))
},
set(_, p, value) {
if (isRef((objectRef.value as any)[p]) && !isRef(value))
(objectRef.value as any)[p].value = value
else
(objectRef.value as any)[p] = value
return true
},
deleteProperty(_, p) {
return Reflect.deleteProperty(objectRef.value, p)
},
has(_, p) {
return Reflect.has(objectRef.value, p)
},
ownKeys() {
return Object.keys(objectRef.value)
},
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
}
},
})
return reactive(proxy) as UnwrapNestedRefs<T>
}
-
JSDoc:
/**
* Converts ref to reactive.
*
* @see https://vueuse.org/toReactive
* @param objectRef A ref of object
*/
-
Parameters:
objectRef: MaybeRef<T>
- Return Type:
UnwrapNestedRefs<T>
- Calls:
isRef (from vue)
reactive (from vue)
unref (from vue)
Reflect.get
Reflect.deleteProperty
Reflect.has
Object.keys