Skip to content

Commit

Permalink
test(runtime-core): test cases when the value of the $stable flag i…
Browse files Browse the repository at this point in the history
…s false (#11485)
  • Loading branch information
btea authored Aug 5, 2024
1 parent 33cd613 commit 3430bff
Showing 1 changed file with 43 additions and 1 deletion.
44 changes: 43 additions & 1 deletion packages/runtime-core/__tests__/componentSlots.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ describe('component: slots', () => {
expect(instance.slots.default()).toMatchObject([normalizeVNode('footer')])
})

test('should respect $stable flag', async () => {
test('should respect $stable flag with a value of true', async () => {
const flag1 = ref(1)
const flag2 = ref(2)
const spy = vi.fn()
Expand Down Expand Up @@ -255,6 +255,48 @@ describe('component: slots', () => {
expect(spy).toHaveBeenCalledTimes(2)
})

test('should respect $stable flag with a value of false', async () => {
const flag1 = ref(1)
const flag2 = ref(2)
const spy = vi.fn()

const Child = () => {
spy()
return 'child'
}

const App = {
setup() {
return () => [
flag1.value,
h(
Child,
{ n: flag2.value },
{
foo: () => 'foo',
$stable: false,
},
),
]
},
}

render(h(App), nodeOps.createElement('div'))
expect(spy).toHaveBeenCalledTimes(1)

// parent re-render, props didn't change, slots are not stable
// -> child should update
flag1.value++
await nextTick()
expect(spy).toHaveBeenCalledTimes(2)

// parent re-render, props changed
// -> child should update
flag2.value++
await nextTick()
expect(spy).toHaveBeenCalledTimes(3)
})

test('should not warn when mounting another app in setup', () => {
const Comp = {
setup(_: any, { slots }: any) {
Expand Down

0 comments on commit 3430bff

Please sign in to comment.