diff --git a/src/core/observer/index.ts b/src/core/observer/index.ts index 84744dd85f9..05cf69a27d8 100644 --- a/src/core/observer/index.ts +++ b/src/core/observer/index.ts @@ -191,7 +191,12 @@ export function defineReactive( } else if (getter) { // #7981: for accessor properties without setter return - } else if (isRef(value) && !isRef(newVal)) { + } else if ( + !shallow && + !isReadonly(newVal) && + isRef(value) && + !isRef(newVal) + ) { value.value = newVal return } else {