Skip to content

Commit 1498821

Browse files
authored
fix(reactivity): warn on nested readonly ref update during unwrapping (#12141)
1 parent 439e1a5 commit 1498821

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

packages/reactivity/__tests__/readonly.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -498,9 +498,10 @@ describe('reactivity/readonly', () => {
498498
const r = ref(false)
499499
const ror = readonly(r)
500500
const obj = reactive({ ror })
501-
expect(() => {
502-
obj.ror = true
503-
}).toThrow()
501+
obj.ror = true
502+
expect(
503+
`Set operation on key "ror" failed: target is readonly.`,
504+
).toHaveBeenWarned()
504505
expect(obj.ror).toBe(false)
505506
})
506507

packages/reactivity/src/baseHandlers.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,13 @@ class MutableReactiveHandler extends BaseReactiveHandler {
153153
}
154154
if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
155155
if (isOldValueReadonly) {
156-
return false
156+
if (__DEV__) {
157+
warn(
158+
`Set operation on key "${String(key)}" failed: target is readonly.`,
159+
target[key],
160+
)
161+
}
162+
return true
157163
} else {
158164
oldValue.value = value
159165
return true

0 commit comments

Comments
 (0)