feat(runtime): 支持对象类型的组件创建

- 在 vnode.ts 中引入 isObject 判断函数
- 修改 createVNode 函数支持对象类型组件的 shapeFlag 设置
- 更新 h-component.html 示例代码,使用 h 函数创建组件
- 新增 h-component-video-test.html 测试文件包含原始 vnode 创建方式
- 移除手动创建 vnode 对象的硬编码方式,统一使用 h 函数创建
This commit is contained in:
dj
2026-02-27 20:01:20 +08:00
parent 61edc322f2
commit 6aa564ef7c
3 changed files with 56 additions and 22 deletions

View File

@@ -1,4 +1,10 @@
import { isArray, isFunction, isString, ShapeFlags } from '@vue/shared'
import {
isArray,
isFunction,
isObject,
isString,
ShapeFlags
} from '@vue/shared'
export interface VNode {
__v_isVNode: true
@@ -11,7 +17,11 @@ export function isVNode(value): value is VNode {
return value ? value.__v_isVNode === true : false
}
export function createVNode(type, props, children): VNode {
const shapeFlag = isString(type) ? ShapeFlags.ELEMENT : 0
const shapeFlag = isString(type)
? ShapeFlags.ELEMENT
: isObject(type)
? ShapeFlags.STATEFUL_COMPONENT
: 0
return createBaseVNode(type, props, children, shapeFlag)
}