Skip to content

Commit 98864a7

Browse files
fix(reactivity): pass oldValue to computed getter (#11813)
close #11812
1 parent c518517 commit 98864a7

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

packages/reactivity/__tests__/computed.spec.ts

+14
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ describe('reactivity/computed', () => {
3333
expect(cValue.value).toBe(1)
3434
})
3535

36+
it('pass oldValue to computed getter', () => {
37+
const count = ref(0)
38+
const oldValue = ref()
39+
const curValue = computed(pre => {
40+
oldValue.value = pre
41+
return count.value
42+
})
43+
expect(curValue.value).toBe(0)
44+
expect(oldValue.value).toBe(undefined)
45+
count.value++
46+
expect(curValue.value).toBe(1)
47+
expect(oldValue.value).toBe(0)
48+
})
49+
3650
it('should compute lazily', () => {
3751
const value = reactive<{ foo?: number }>({})
3852
const getter = vi.fn(() => value.foo)

packages/reactivity/src/effect.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ export function refreshComputed(computed: ComputedRefImpl): false | undefined {
381381

382382
try {
383383
prepareDeps(computed)
384-
const value = computed.fn()
384+
const value = computed.fn(computed._value)
385385
if (dep.version === 0 || hasChanged(value, computed._value)) {
386386
computed._value = value
387387
dep.version++

0 commit comments

Comments
 (0)