mirror of https://github.com/vuejs/core.git
fix(reactivity): respect readonly during ref unwrapping (#13905)
close #13903
This commit is contained in:
parent
ba7f7f90f6
commit
aba7feda17
|
@ -522,6 +522,16 @@ describe('reactivity/readonly', () => {
|
||||||
expect(obj.r).toBe(ro)
|
expect(obj.r).toBe(ro)
|
||||||
expect(r.value).toBe(ro)
|
expect(r.value).toBe(ro)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('should keep nested ref readonly', () => {
|
||||||
|
const items = ref(['one', 'two', 'three'])
|
||||||
|
const obj = {
|
||||||
|
o: readonly({
|
||||||
|
items,
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
expect(isReadonly(obj.o.items)).toBe(true)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
test('should be able to trigger with triggerRef', () => {
|
test('should be able to trigger with triggerRef', () => {
|
||||||
|
|
|
@ -119,7 +119,8 @@ class BaseReactiveHandler implements ProxyHandler<Target> {
|
||||||
|
|
||||||
if (isRef(res)) {
|
if (isRef(res)) {
|
||||||
// ref unwrapping - skip unwrap for Array + integer key.
|
// ref unwrapping - skip unwrap for Array + integer key.
|
||||||
return targetIsArray && isIntegerKey(key) ? res : res.value
|
const value = targetIsArray && isIntegerKey(key) ? res : res.value
|
||||||
|
return isReadonly && isObject(value) ? readonly(value) : value
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isObject(res)) {
|
if (isObject(res)) {
|
||||||
|
|
Loading…
Reference in New Issue