视图类型
View
视图基类型,所有视图的公共接口。
ts
type View = HostView | ListView | DynamicView | ComponentView说明:View 是所有视图类型的联合类型,包括元素视图、列表视图、动态视图和组件视图。
View 接口
ts
interface View {
readonly [IS_VIEW]: true
init(ctx: ViewContext): void
mount(container: HostContainer): void
dispose(): void
}方法:
| 方法 | 说明 |
|---|---|
init() | 初始化视图 |
mount() | 挂载到容器 |
dispose() | 销毁视图 |
ElementView
元素视图类型。
ts
interface ElementView extends View {
readonly tag: string
readonly props: Record<string, any>
}属性:
| 属性 | 类型 | 说明 |
|---|---|---|
tag | string | HTML 标签名 |
props | Record<string, any> | 元素属性 |
ComponentView
组件视图类型。
ts
interface ComponentView extends View {
readonly component: Component
readonly instance: ComponentInstance
}DynamicView
动态视图类型。
ts
interface DynamicView<T = any> extends View {
readonly source: Ref<T>
}FragmentProps
片段属性类型。
ts
interface FragmentProps {
children?: RenderChildren
}属性:
| 属性 | 类型 | 说明 |
|---|---|---|
children | RenderChildren | 子节点 |
RenderChild
渲染子节点类型。
ts
type RenderChild = Renderable | Ref<Renderable>RenderChildren
渲染子节点集合类型。
ts
type RenderChildren = RenderChild | Iterable<RenderChildren>ViewDescriptor
视图描述符类型,h() 函数接受的类型。
ts
type ViewDescriptor = HostElementTag | Component | ViewBuilderInferView
根据视图描述符推断视图类型。
ts
type InferView<T extends ViewDescriptor> = T extends HostElementTag
? ElementView
: T extends Component
? ComponentView
: T extends ViewBuilder
? View
: never