type VNodeProps,
createVNode,
isVNode,
+ setBlockTracking,
} from './vnode'
import type { Teleport, TeleportProps } from './components/Teleport'
import type { Suspense, SuspenseProps } from './components/Suspense'
// Actual implementation
export function h(type: any, propsOrChildren?: any, children?: any): VNode {
+ // #6913 disable tracking block in h function
+ const doCreateVNode = (type: any, props?: any, children?: any) => {
+ setBlockTracking(-1)
+ try {
+ return createVNode(type, props, children)
+ } finally {
+ setBlockTracking(1)
+ }
+ }
+
const l = arguments.length
if (l === 2) {
if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
// single vnode without props
if (isVNode(propsOrChildren)) {
- return createVNode(type, null, [propsOrChildren])
+ return doCreateVNode(type, null, [propsOrChildren])
}
// props without children
- return createVNode(type, propsOrChildren)
+ return doCreateVNode(type, propsOrChildren)
} else {
// omit props
- return createVNode(type, null, propsOrChildren)
+ return doCreateVNode(type, null, propsOrChildren)
}
} else {
if (l > 3) {
} else if (l === 3 && isVNode(children)) {
children = [children]
}
- return createVNode(type, propsOrChildren, children)
+ return doCreateVNode(type, propsOrChildren, children)
}
}