mirror of https://github.com/vuejs/core.git
parent
9d1ca320c4
commit
ef432bda77
|
@ -174,18 +174,20 @@ class MutableReactiveHandler extends BaseReactiveHandler {
|
||||||
receiver: object
|
receiver: object
|
||||||
): boolean {
|
): boolean {
|
||||||
let oldValue = (target as any)[key]
|
let oldValue = (target as any)[key]
|
||||||
if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if (!this._shallow) {
|
if (!this._shallow) {
|
||||||
|
const isOldValueReadonly = isReadonly(oldValue)
|
||||||
if (!isShallow(value) && !isReadonly(value)) {
|
if (!isShallow(value) && !isReadonly(value)) {
|
||||||
oldValue = toRaw(oldValue)
|
oldValue = toRaw(oldValue)
|
||||||
value = toRaw(value)
|
value = toRaw(value)
|
||||||
}
|
}
|
||||||
if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
|
if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
|
||||||
|
if (isOldValueReadonly) {
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
oldValue.value = value
|
oldValue.value = value
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// in shallow mode, objects are set as-is regardless of reactive or not
|
// in shallow mode, objects are set as-is regardless of reactive or not
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue