isReactive,
isReadonly,
markNonReactive,
- markReadonly,
lock,
unlock,
effect,
expect(isReactive(obj.bar)).toBe(false)
})
- test('markReadonly', () => {
- const obj = reactive({
- foo: { a: 1 },
- bar: markReadonly({ b: 2 })
- })
- expect(isReactive(obj.foo)).toBe(true)
- expect(isReactive(obj.bar)).toBe(true)
- expect(isReadonly(obj.foo)).toBe(false)
- expect(isReadonly(obj.bar)).toBe(true)
- })
-
test('should make ref readonly', () => {
const n: any = readonly(ref(1))
n.value = 2
// WeakSets for values that are marked readonly or non-reactive during
// observable creation.
-const readonlyValues = new WeakSet<any>()
const nonReactiveValues = new WeakSet<any>()
const collectionTypes = new Set<Function>([Set, Map, WeakMap, WeakSet])
if (readonlyToRaw.has(target)) {
return target
}
- // target is explicitly marked as readonly by user
- if (readonlyValues.has(target)) {
- return readonly(target)
- }
if (isRef(target)) {
return target
}
return reactiveToRaw.get(observed) || readonlyToRaw.get(observed) || observed
}
-export function markReadonly<T>(value: T): T {
- readonlyValues.add(value)
- return value
-}
-
export function markNonReactive<T extends object>(value: T): T {
nonReactiveValues.add(value)
return value