Skip to content

Commit b948454

Browse files
authored
refactor(reactivity): make some expression simpler (#5131)
1 parent 98b821d commit b948454

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

packages/reactivity/src/baseHandlers.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,8 @@ function createGetter(isReadonly = false, shallow = false) {
125125
}
126126

127127
if (isRef(res)) {
128-
// ref unwrapping - does not apply for Array + integer key.
129-
const shouldUnwrap = !targetIsArray || !isIntegerKey(key)
130-
return shouldUnwrap ? res.value : res
128+
// ref unwrapping - skip unwrap for Array + integer key.
129+
return targetIsArray && isIntegerKey(key) ? res : res.value
131130
}
132131

133132
if (isObject(res)) {

packages/reactivity/src/collectionHandlers.ts

+10-6
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ function get(
2626
target = (target as any)[ReactiveFlags.RAW]
2727
const rawTarget = toRaw(target)
2828
const rawKey = toRaw(key)
29-
if (key !== rawKey) {
30-
!isReadonly && track(rawTarget, TrackOpTypes.GET, key)
29+
if (!isReadonly) {
30+
if (key !== rawKey) {
31+
track(rawTarget, TrackOpTypes.GET, key)
32+
}
33+
track(rawTarget, TrackOpTypes.GET, rawKey)
3134
}
32-
!isReadonly && track(rawTarget, TrackOpTypes.GET, rawKey)
3335
const { has } = getProto(rawTarget)
3436
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive
3537
if (has.call(rawTarget, key)) {
@@ -47,10 +49,12 @@ function has(this: CollectionTypes, key: unknown, isReadonly = false): boolean {
4749
const target = (this as any)[ReactiveFlags.RAW]
4850
const rawTarget = toRaw(target)
4951
const rawKey = toRaw(key)
50-
if (key !== rawKey) {
51-
!isReadonly && track(rawTarget, TrackOpTypes.HAS, key)
52+
if (!isReadonly) {
53+
if (key !== rawKey) {
54+
track(rawTarget, TrackOpTypes.HAS, key)
55+
}
56+
track(rawTarget, TrackOpTypes.HAS, rawKey)
5257
}
53-
!isReadonly && track(rawTarget, TrackOpTypes.HAS, rawKey)
5458
return key === rawKey
5559
? target.has(key)
5660
: target.has(key) || target.has(rawKey)

packages/runtime-core/src/renderer.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1544,11 +1544,11 @@ function baseCreateRenderer(
15441544
// create reactive effect for rendering
15451545
const effect = (instance.effect = new ReactiveEffect(
15461546
componentUpdateFn,
1547-
() => queueJob(instance.update),
1547+
() => queueJob(update),
15481548
instance.scope // track it in component's effect scope
15491549
))
15501550

1551-
const update = (instance.update = effect.run.bind(effect) as SchedulerJob)
1551+
const update: SchedulerJob = (instance.update = () => effect.run())
15521552
update.id = instance.uid
15531553
// allowRecurse
15541554
// #1801, #2043 component render effects should allow recursive updates
@@ -1561,7 +1561,6 @@ function baseCreateRenderer(
15611561
effect.onTrigger = instance.rtg
15621562
? e => invokeArrayFns(instance.rtg!, e)
15631563
: void 0
1564-
// @ts-ignore (for scheduler)
15651564
update.ownerInstance = instance
15661565
}
15671566

0 commit comments

Comments
 (0)