mirror of https://github.com/vuejs/core.git
fix(reactivity): pass oldValue to computed getter (#11813)
close #11812
This commit is contained in:
parent
c518517cb3
commit
98864a7ef5
|
|
@ -33,6 +33,20 @@ describe('reactivity/computed', () => {
|
||||||
expect(cValue.value).toBe(1)
|
expect(cValue.value).toBe(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('pass oldValue to computed getter', () => {
|
||||||
|
const count = ref(0)
|
||||||
|
const oldValue = ref()
|
||||||
|
const curValue = computed(pre => {
|
||||||
|
oldValue.value = pre
|
||||||
|
return count.value
|
||||||
|
})
|
||||||
|
expect(curValue.value).toBe(0)
|
||||||
|
expect(oldValue.value).toBe(undefined)
|
||||||
|
count.value++
|
||||||
|
expect(curValue.value).toBe(1)
|
||||||
|
expect(oldValue.value).toBe(0)
|
||||||
|
})
|
||||||
|
|
||||||
it('should compute lazily', () => {
|
it('should compute lazily', () => {
|
||||||
const value = reactive<{ foo?: number }>({})
|
const value = reactive<{ foo?: number }>({})
|
||||||
const getter = vi.fn(() => value.foo)
|
const getter = vi.fn(() => value.foo)
|
||||||
|
|
|
||||||
|
|
@ -381,7 +381,7 @@ export function refreshComputed(computed: ComputedRefImpl): false | undefined {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
prepareDeps(computed)
|
prepareDeps(computed)
|
||||||
const value = computed.fn()
|
const value = computed.fn(computed._value)
|
||||||
if (dep.version === 0 || hasChanged(value, computed._value)) {
|
if (dep.version === 0 || hasChanged(value, computed._value)) {
|
||||||
computed._value = value
|
computed._value = value
|
||||||
dep.version++
|
dep.version++
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue