Skip to content

Commit ad93fa4

Browse files
committed
fix(runtime-core): openBlock() should not be tracked when block tracking is disabled
1 parent 552ad4e commit ad93fa4

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

packages/runtime-core/__tests__/vnode.spec.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from '../src/vnode'
1313
import { Data } from '../src/component'
1414
import { ShapeFlags, PatchFlags } from '@vue/shared'
15-
import { h, reactive, isReactive } from '../src'
15+
import { h, reactive, isReactive, setBlockTracking } from '../src'
1616
import { createApp, nodeOps, serializeInner } from '@vue/runtime-test'
1717
import { setCurrentRenderingInstance } from '../src/componentRenderUtils'
1818

@@ -535,6 +535,18 @@ describe('vnode', () => {
535535
expect(vnode.dynamicChildren).toStrictEqual([vnode1])
536536
expect(vnode1.dynamicChildren).toStrictEqual([vnode2])
537537
})
538+
539+
test('should not track openBlock() when tracking is disabled', () => {
540+
let vnode1
541+
const vnode = (openBlock(),
542+
createBlock('div', null, [
543+
setBlockTracking(-1),
544+
(vnode1 = (openBlock(), createBlock('div'))),
545+
setBlockTracking(1),
546+
vnode1
547+
]))
548+
expect(vnode.dynamicChildren).toStrictEqual([])
549+
})
538550
})
539551

540552
describe('transformVNodeArgs', () => {

packages/runtime-core/src/vnode.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ export function createBlock(
235235
closeBlock()
236236
// a block is always going to be patched, so track it as a child of its
237237
// parent block
238-
if (currentBlock) {
238+
if (shouldTrack > 0 && currentBlock) {
239239
currentBlock.push(vnode)
240240
}
241241
return vnode

0 commit comments

Comments
 (0)