mirror of https://github.com/vuejs/core.git
test: add test case
This commit is contained in:
parent
b6a78a4d87
commit
1373bc7c05
|
@ -204,6 +204,32 @@ describe('v-memo', () => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// #12708
|
||||||
|
test('v-memo should work correctly when toggling v-if with v-for inside', async () => {
|
||||||
|
const [el, vm] = mount({
|
||||||
|
template: `<span v-if="show">
|
||||||
|
<span v-for="elem in [1]" :key="elem" v-memo="[count]">{{count}}</span>
|
||||||
|
</span>`,
|
||||||
|
data: () => ({
|
||||||
|
show: true,
|
||||||
|
count: 0,
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
expect(el.innerHTML).toBe(`<span><span>0</span></span>`)
|
||||||
|
|
||||||
|
vm.show = false
|
||||||
|
await nextTick()
|
||||||
|
expect(el.innerHTML).toBe(`<!--v-if-->`)
|
||||||
|
|
||||||
|
vm.show = true
|
||||||
|
await nextTick()
|
||||||
|
expect(el.innerHTML).toBe(`<span><span>0</span></span>`)
|
||||||
|
|
||||||
|
vm.count++
|
||||||
|
await nextTick()
|
||||||
|
expect(el.innerHTML).toBe(`<span><span>1</span></span>`)
|
||||||
|
})
|
||||||
|
|
||||||
test('on v-for /w constant expression ', async () => {
|
test('on v-for /w constant expression ', async () => {
|
||||||
const [el, vm] = mount({
|
const [el, vm] = mount({
|
||||||
template: `<div v-for="item in 3" v-memo="[count < 2 ? true : count]">
|
template: `<div v-for="item in 3" v-memo="[count < 2 ? true : count]">
|
||||||
|
|
|
@ -243,7 +243,7 @@ export interface VNode<
|
||||||
memo?: any[]
|
memo?: any[]
|
||||||
/**
|
/**
|
||||||
* @internal index for cleaning v-memo cache
|
* @internal index for cleaning v-memo cache
|
||||||
* cacheIndex will be an array when vnode in vFor
|
* cacheIndex will be an array when vnode in vFor + vMemo
|
||||||
*/
|
*/
|
||||||
cacheIndex?: number | number[]
|
cacheIndex?: number | number[]
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue