fix(runtime-core): fix child component double update on props change

fix #4365
This commit is contained in:
Evan You
2021-08-17 10:57:28 -04:00
parent 57f10812cc
commit c1f564e1dc
2 changed files with 34 additions and 2 deletions

View File

@@ -324,4 +324,34 @@ describe('renderer: component', () => {
expect(serializeInner(root)).toBe(``)
expect(ids).toEqual([ids[0], ids[0] + 1, ids[0] + 2])
})
test('child component props update should not lead to double update', async () => {
const text = ref(0)
const spy = jest.fn()
const App = {
render() {
return h(Comp, { text: text.value })
}
}
const Comp = {
props: ['text'],
render(this: any) {
spy()
return h('h1', this.text)
}
}
const root = nodeOps.createElement('div')
render(h(App), root)
expect(serializeInner(root)).toBe(`<h1>0</h1>`)
expect(spy).toHaveBeenCalledTimes(1)
text.value++
await nextTick()
expect(serializeInner(root)).toBe(`<h1>1</h1>`)
expect(spy).toHaveBeenCalledTimes(2)
})
})