fix(runtime-core): fix child component double update on props change
fix #4365
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user