Skip to content

Commit 5d26f81

Browse files
authored
fix(reactivity): check skip first before checking ref when creating observer (#12813)
fix #12812
1 parent 4a0d88e commit 5d26f81

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/core/observer/index.ts

+7-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
hasOwn,
88
isArray,
99
hasProto,
10-
isObject,
1110
isPlainObject,
1211
isPrimitive,
1312
isUndef,
@@ -108,23 +107,21 @@ export function observe(
108107
shallow?: boolean,
109108
ssrMockReactivity?: boolean
110109
): Observer | void {
111-
if (!isObject(value) || isRef(value) || value instanceof VNode) {
112-
return
110+
if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
111+
return value.__ob__
113112
}
114-
let ob: Observer | void
115-
if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
116-
ob = value.__ob__
117-
} else if (
113+
if (
118114
shouldObserve &&
119115
(ssrMockReactivity || !isServerRendering()) &&
120116
(isArray(value) || isPlainObject(value)) &&
121117
Object.isExtensible(value) &&
122118
!value.__v_skip /* ReactiveFlags.SKIP */ &&
123-
!rawMap.has(value)
119+
!rawMap.has(value) &&
120+
!isRef(value) &&
121+
!(value instanceof VNode)
124122
) {
125-
ob = new Observer(value, shallow, ssrMockReactivity)
123+
return new Observer(value, shallow, ssrMockReactivity)
126124
}
127-
return ob
128125
}
129126

130127
/**

0 commit comments

Comments
 (0)