fix(runtime-core): should pause tracking when initializing legacy options (#2524)
fix #2521
This commit is contained in:
parent
5b6266284d
commit
0ff2a4f1c1
@ -232,4 +232,47 @@ describe('renderer: component', () => {
|
||||
await nextTick()
|
||||
expect(serializeInner(root)).toBe(`<div>1</div><div>1</div>`)
|
||||
})
|
||||
|
||||
// #2521
|
||||
test('should pause tracking deps when initializing legacy options', async () => {
|
||||
let childInstance = null as any
|
||||
const Child = {
|
||||
props: ['foo'],
|
||||
data() {
|
||||
return {
|
||||
count: 0
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
foo: {
|
||||
immediate: true,
|
||||
handler() {
|
||||
;(this as any).count
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
childInstance = this as any
|
||||
childInstance.count
|
||||
},
|
||||
render() {
|
||||
return h('h1', (this as any).count)
|
||||
}
|
||||
}
|
||||
|
||||
const App = {
|
||||
setup() {
|
||||
return () => h(Child)
|
||||
},
|
||||
updated: jest.fn()
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(App), root)
|
||||
expect(App.updated).toHaveBeenCalledTimes(0)
|
||||
|
||||
childInstance.count++
|
||||
await nextTick()
|
||||
expect(App.updated).toHaveBeenCalledTimes(0)
|
||||
})
|
||||
})
|
||||
|
@ -704,7 +704,9 @@ function finishComponentSetup(
|
||||
// support for 2.x options
|
||||
if (__FEATURE_OPTIONS_API__) {
|
||||
currentInstance = instance
|
||||
pauseTracking()
|
||||
applyOptions(instance, Component)
|
||||
resetTracking()
|
||||
currentInstance = null
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user