视图类型

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>
}

属性

属性类型说明
tagstringHTML 标签名
propsRecord<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
}

属性

属性类型说明
childrenRenderChildren子节点

RenderChild

渲染子节点类型。

ts
type RenderChild = Renderable | Ref<Renderable>

RenderChildren

渲染子节点集合类型。

ts
type RenderChildren = RenderChild | Iterable<RenderChildren>

ViewDescriptor

视图描述符类型,h() 函数接受的类型。

ts
type ViewDescriptor = HostElementTag | Component | ViewBuilder

InferView

根据视图描述符推断视图类型。

ts
type InferView<T extends ViewDescriptor> = T extends HostElementTag
  ? ElementView
  : T extends Component
    ? ComponentView
    : T extends ViewBuilder
      ? View
      : never