]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(reactivity): warn on nested readonly ref update during unwrapping (#12141)
authorTycho <jh.leong@outlook.com>
Wed, 20 Aug 2025 12:45:01 +0000 (20:45 +0800)
committerGitHub <noreply@github.com>
Wed, 20 Aug 2025 12:45:01 +0000 (20:45 +0800)
packages/reactivity/__tests__/readonly.spec.ts
packages/reactivity/src/baseHandlers.ts

index b035779f85aba3736b6cea0de488903b57a3e34b..b8dbdc3f6cca7092f3f06557c65d22133abae85d 100644 (file)
@@ -498,9 +498,10 @@ describe('reactivity/readonly', () => {
     const r = ref(false)
     const ror = readonly(r)
     const obj = reactive({ ror })
-    expect(() => {
-      obj.ror = true
-    }).toThrow()
+    obj.ror = true
+    expect(
+      `Set operation on key "ror" failed: target is readonly.`,
+    ).toHaveBeenWarned()
     expect(obj.ror).toBe(false)
   })
 
index faec3012f402b5a611964497e5e355b2646c00c9..6368018192769ab51780cf28af75fc60cb346c81 100644 (file)
@@ -153,7 +153,13 @@ class MutableReactiveHandler extends BaseReactiveHandler {
       }
       if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
         if (isOldValueReadonly) {
-          return false
+          if (__DEV__) {
+            warn(
+              `Set operation on key "${String(key)}" failed: target is readonly.`,
+              target[key],
+            )
+          }
+          return true
         } else {
           oldValue.value = value
           return true