API › @builder.io/qwik

_qrlSync

此 API 作为开发者预览版提供,可能会根据我们收到的反馈进行更改。请勿在生产环境中使用此 API。

将函数提取到可同步加载的 QRL 中。

注意:同步 QRL 函数不能闭包任何变量,包括导出。

_qrlSync: <TYPE extends Function>(fn: TYPE, serializedFn?: string) =>
  SyncQRL<TYPE>;

参数

类型

描述

fn

TYPE

提取的函数

serializedFn

string

(可选) 字符串形式的序列化函数。

SyncQRL<TYPE>

编辑此部分

"q:slot"

'q:slot'?: string;

"xlink:actuate"

'xlink:actuate'?: string | undefined;

"xlink:arcrole"

'xlink:arcrole'?: string | undefined;

"xlink:href"

'xlink:href'?: string | undefined;

"xlink:role"

'xlink:role'?: string | undefined;

"xlink:show"

'xlink:show'?: string | undefined;

"xlink:title"

'xlink:title'?: string | undefined;

"xlink:type"

'xlink:type'?: string | undefined;

"xml:base"

'xml:base'?: string | undefined;

"xml:lang"

'xml:lang'?: string | undefined;

"xml:space"

'xml:space'?: string | undefined;
'xmlns:xlink'?: string | undefined;

$

Qwik 优化器标记函数。

使用 $(...) 告诉 Qwik 优化器将 $(...) 中的表达式提取到由 QRL 引用的延迟加载资源中。

$: <T>(expression: T) => QRL<T>;

参数

类型

描述

expression

T

应延迟加载的表达式

QRL<T>

编辑此部分

AnchorHTMLAttributes

export interface AnchorHTMLAttributes<T extends Element> extends Attrs<'a', T>

扩展: Attrs<'a', T>

编辑此部分

AreaHTMLAttributes

export interface AreaHTMLAttributes<T extends Element> extends Attrs<'area', T>

扩展: Attrs<'area', T>

编辑此部分

AriaAttributes

TS 使用 React 语法定义这些,这与 Qwik 不兼容。例如 ariaAtomic 而不是 aria-atomic

export interface AriaAttributes

属性

修饰符

类型

描述

"aria-activedescendant"?

string | undefined

(可选) 当 DOM 焦点位于复合小部件、文本框、组或应用程序上时,标识当前活动元素。

"aria-atomic"?

Booleanish | undefined

(可选) 指示辅助技术将根据 aria-relevant 属性定义的更改通知,呈现更改区域的全部内容,还是仅呈现部分内容。

"aria-autocomplete"?

'none' | 'inline' | 'list' | 'both' | undefined

(可选) 指示输入文本是否可以触发显示一个或多个对用户为输入意图值的预测,并指定如果进行预测,则如何呈现预测。

"aria-busy"?

Booleanish | undefined

(可选) 指示元素正在修改,辅助技术可能希望在修改完成之前等待,然后再将它们暴露给用户。

"aria-checked"?

boolean | 'false' | 'mixed' | 'true' | undefined

(可选) 指示复选框、单选按钮和其他小部件的当前“选中”状态。

"aria-colcount"?

number | undefined

(可选) 定义表格、网格或树形网格中的总列数。

"aria-colindex"?

number | undefined

(可选) 定义元素的列索引或相对于表格、网格或树形网格中总列数的位置。

"aria-colspan"?

number | undefined

(可选) 定义表格、网格或树形网格中单元格或网格单元格所跨越的列数。

"aria-controls"?

string | undefined

(可选) 标识其内容或存在由当前元素控制的元素(或元素)。

"aria-current"?

boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | undefined

(可选) 指示代表容器或一组相关元素中当前项目的元素。

"aria-describedby"?

string | undefined

(可选) 标识描述对象的元素(或元素)。

"aria-details"?

string | undefined

(可选) 标识为对象提供详细扩展描述的元素。

"aria-disabled"?

Booleanish | undefined

(可选) 指示元素是可感知的但已禁用,因此不可编辑或不可操作。

"aria-dropeffect"?

'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined

(可选) 指示在拖动对象在放置目标上释放时可以执行哪些功能。

"aria-errormessage"?

string | undefined

(可选) 标识为对象提供错误消息的元素。

"aria-expanded"?

Booleanish | undefined

(可选) 指示元素或其控制的另一个分组元素当前是展开还是折叠。

"aria-flowto"?

string | undefined

(可选) 标识内容的备用阅读顺序中的下一个元素(或元素),该顺序可让辅助技术根据用户的选择覆盖阅读文档源顺序的常规默认值。

"aria-grabbed"?

Booleanish | undefined

(可选) 指示元素在拖放操作中的“已抓取”状态。

"aria-haspopup"?

boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined

(可选) 指示可由元素触发的交互式弹出元素(如菜单或对话框)的可用性和类型。

"aria-hidden"?

Booleanish | undefined

(可选) 指示元素是否暴露给辅助功能 API。

"aria-invalid"?

boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined

(可选) 指示输入的值不符合应用程序预期的格式。

"aria-keyshortcuts"?

string | undefined

(可选) 指示作者已实现的键盘快捷键,用于激活或将焦点设置到元素。

"aria-label"?

string | undefined

(可选) 定义一个字符串值,该值标记当前元素。

"aria-labelledby"?

string | undefined

(可选) 标识标记当前元素的元素(或元素)。

"aria-level"?

number | undefined

(可选) 定义结构中元素的层次结构级别。

"aria-live"?

'off' | 'assertive' | 'polite' | undefined

(可选) 指示元素将更新,并描述用户代理、辅助技术和用户可以从活动区域预期的更新类型。

"aria-modal"?

Booleanish | undefined

(可选) 指示元素在显示时是否为模态。

"aria-multiline"?

Booleanish | undefined

(可选) 指示文本框是否接受多行输入或仅接受单行输入。

"aria-multiselectable"?

Booleanish | undefined

(可选) 指示用户可以从当前可选择的后代中选择多个项目。

"aria-orientation"?

'horizontal' | 'vertical' | undefined

(可选) 指示元素的方向是水平、垂直还是未知/模棱两可。

"aria-owns"?

string | undefined

(可选) 标识元素(或元素),以定义 DOM 元素之间的视觉、功能或上下文父/子关系,其中 DOM 层次结构不能用于表示关系。

"aria-placeholder"?

string | undefined

(可选) 定义一个简短的提示(一个词或短语),旨在帮助用户在控件没有值时进行数据输入。提示可以是示例值或对预期格式的简要描述。

"aria-posinset"?

number | undefined

(可选) 定义元素在当前 listitems 或 treeitems 集中的编号或位置。如果集合中的所有元素都存在于 DOM 中,则不需要此属性。

"aria-pressed"?

boolean | 'false' | 'mixed' | 'true' | undefined

(可选) 指示切换按钮的当前“按下”状态。

"aria-readonly"?

Booleanish | undefined

(可选) 指示元素不可编辑,但可以操作。

"aria-relevant"?

'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals' | undefined

(可选) 指示当活动区域内的可访问性树被修改时,用户代理将触发哪些通知。

"aria-required"?

Booleanish | undefined

(可选) 指示在提交表单之前,需要在元素上输入用户输入。

"aria-roledescription"?

string | undefined

(可选) 为元素的角色定义一个可读的、作者本地化的描述。

"aria-rowcount"?

number | undefined

(可选) 定义表格、网格或树形网格中的总行数。

"aria-rowindex"?

number | undefined

(可选) 定义元素的行索引或相对于表格、网格或树形网格中总行数的位置。

"aria-rowspan"?

number | undefined

(可选) 定义表格、网格或树形网格中单元格或网格单元格所跨越的行数。

"aria-selected"?

Booleanish | undefined

(可选) 指示各种小部件的当前“选中”状态。

"aria-setsize"?

number | undefined

(可选) 定义当前列表项或树项集中项目的数量。如果集合中的所有元素都存在于 DOM 中,则不需要。

"aria-sort"?

'none' | 'ascending' | 'descending' | 'other' | undefined

(可选) 指示表格或网格中的项目是按升序还是降序排序。

"aria-valuemax"?

number | undefined

(可选) 定义范围小部件允许的最大值。

"aria-valuemin"?

number | undefined

(可选) 定义范围小部件允许的最小值。

"aria-valuenow"?

number | undefined

(可选) 定义范围小部件的当前值。

"aria-valuetext"?

string | undefined

(可选) 为范围小部件定义 aria-valuenow 的可读文本替代。

编辑此部分

AriaRole

export type AriaRole =
  | "alert"
  | "alertdialog"
  | "application"
  | "article"
  | "banner"
  | "button"
  | "cell"
  | "checkbox"
  | "columnheader"
  | "combobox"
  | "complementary"
  | "contentinfo"
  | "definition"
  | "dialog"
  | "directory"
  | "document"
  | "feed"
  | "figure"
  | "form"
  | "grid"
  | "gridcell"
  | "group"
  | "heading"
  | "img"
  | "link"
  | "list"
  | "listbox"
  | "listitem"
  | "log"
  | "main"
  | "marquee"
  | "math"
  | "menu"
  | "menubar"
  | "menuitem"
  | "menuitemcheckbox"
  | "menuitemradio"
  | "navigation"
  | "none"
  | "note"
  | "option"
  | "presentation"
  | "progressbar"
  | "radio"
  | "radiogroup"
  | "region"
  | "row"
  | "rowgroup"
  | "rowheader"
  | "scrollbar"
  | "search"
  | "searchbox"
  | "separator"
  | "slider"
  | "spinbutton"
  | "status"
  | "switch"
  | "tab"
  | "table"
  | "tablist"
  | "tabpanel"
  | "term"
  | "textbox"
  | "timer"
  | "toolbar"
  | "tooltip"
  | "tree"
  | "treegrid"
  | "treeitem"
  | (string & {});

编辑此部分

AudioHTMLAttributes

export interface AudioHTMLAttributes<T extends Element> extends Attrs<'audio', T>

扩展: Attrs<'audio', T>

编辑此部分

BaseHTMLAttributes

export interface BaseHTMLAttributes<T extends Element> extends Attrs<'base', T>

扩展: Attrs<'base', T>

编辑此部分

BlockquoteHTMLAttributes

export interface BlockquoteHTMLAttributes<T extends Element> extends Attrs<'blockquote', T>

扩展: Attrs<'blockquote', T>

编辑此部分

Booleanish

export type Booleanish = boolean | `${boolean}`;

编辑此部分

ButtonHTMLAttributes

export interface ButtonHTMLAttributes<T extends Element> extends Attrs<'button', T>

扩展: Attrs<'button', T>

编辑此部分

cache

cache(policyOrMilliseconds: number | 'immutable'): void;

参数

类型

描述

policyOrMilliseconds

number | 'immutable'

void

CanvasHTMLAttributes

export interface CanvasHTMLAttributes<T extends Element> extends Attrs<'canvas', T>

扩展: Attrs<'canvas', T>

编辑此部分

ClassList

类列表可以是字符串、布尔值、数组或对象。

如果是数组,则每个项目都是一个类列表,并且它们都被添加。

如果是对象,则键是类名字符串,值是布尔值,用于确定是否应添加类名字符串。

export type ClassList =
  | string
  | undefined
  | null
  | false
  | Record<string, boolean | string | number | null | undefined>
  | ClassList[];

参考: ClassList

编辑此部分

cleanup

cleanup(): void;

返回值

void

ColgroupHTMLAttributes

export interface ColgroupHTMLAttributes<T extends Element> extends Attrs<'colgroup', T>

扩展: Attrs<'colgroup', T>

编辑此部分

ColHTMLAttributes

export interface ColHTMLAttributes<T extends Element> extends Attrs<'col', T>

扩展: Attrs<'col', T>

编辑此部分

Component

表示 Qwik 组件的类型。

Component 是调用 component$ 返回的类型。

interface MyComponentProps {
  someProp: string;
}
const MyComponent: Component<MyComponentProps> = component$(
  (props: MyComponentProps) => {
    return <span>{props.someProp}</span>;
  },
);
export type Component<PROPS = unknown> = FunctionComponent<PublicProps<PROPS>>;

参考: FunctionComponent, PublicProps

编辑此部分

component$

声明一个可用于创建 UI 的 Qwik 组件。

使用 component$ 声明一个 Qwik 组件。Qwik 组件是一种特殊类型的组件,它允许 Qwik 框架独立于其他 Qwik 组件延迟加载和执行组件,以及延迟加载组件的生命周期钩子和事件处理程序。

旁注:您还可以声明常规(标准 JSX)组件,这些组件将具有标准的同步行为。

Qwik 组件是一个描述组件应如何使用而不强制组件实现被急切加载的 фаса́д。最小的 Qwik 定义包括

示例

一个显示如何创建计数器组件的示例

export interface CounterProps {
  initialValue?: number;
  step?: number;
}
export const Counter = component$((props: CounterProps) => {
  const state = useStore({ count: props.initialValue || 0 });
  return (
    <div>
      <span>{state.count}</span>
      <button onClick$={() => (state.count += props.step || 1)}>+</button>
    </div>
  );
});
  • component$ 是组件声明的方式。 - { value?: number; step?: number } 声明组件的公共(props)接口。 - { count: number } 声明组件的私有(状态)接口。

以上可以像这样使用

export const OtherComponent = component$(() => {
  return <Counter initialValue={100} />;
});

另请参阅:componentuseCleanuponResumeonPauseuseOnuseOnDocumentuseOnWindowuseStyles

component$: <PROPS = unknown>(onMount: OnRenderFn<PROPS>) => Component<PROPS>;

参数

类型

描述

onMount

OnRenderFn<PROPS>

Component<PROPS>

编辑此部分

ComponentBaseProps

export interface ComponentBaseProps

属性

修饰符

类型

描述

"q:slot"?

string

(可选)

key?

string | number | null | undefined

(可选)

编辑此部分

componentQrl

声明一个可用于创建 UI 的 Qwik 组件。

使用 component$ 声明一个 Qwik 组件。Qwik 组件是一种特殊类型的组件,它允许 Qwik 框架独立于其他 Qwik 组件延迟加载和执行组件,以及延迟加载组件的生命周期钩子和事件处理程序。

旁注:您还可以声明常规(标准 JSX)组件,这些组件将具有标准的同步行为。

Qwik 组件是一个描述组件应如何使用而不强制组件实现被急切加载的 фаса́д。最小的 Qwik 定义包括

示例

一个显示如何创建计数器组件的示例

export interface CounterProps {
  initialValue?: number;
  step?: number;
}
export const Counter = component$((props: CounterProps) => {
  const state = useStore({ count: props.initialValue || 0 });
  return (
    <div>
      <span>{state.count}</span>
      <button onClick$={() => (state.count += props.step || 1)}>+</button>
    </div>
  );
});
  • component$ 是组件声明的方式。 - { value?: number; step?: number } 声明组件的公共(props)接口。 - { count: number } 声明组件的私有(状态)接口。

以上可以像这样使用

export const OtherComponent = component$(() => {
  return <Counter initialValue={100} />;
});

另请参阅:componentuseCleanuponResumeonPauseuseOnuseOnDocumentuseOnWindowuseStyles

componentQrl: <PROPS extends Record<any, any>>(
  componentQrl: QRL<OnRenderFn<PROPS>>,
) => Component<PROPS>;

参数

类型

描述

componentQrl

QRL<OnRenderFn<PROPS>>

Component<PROPS>

编辑此部分

ComputedFn

export type ComputedFn<T> = () => T;

编辑此部分

ContextId

ContextId 是您上下文的类型安全 ID。

上下文是一种在不进行道具传递的情况下将存储传递给子组件的方式。

使用 createContextId() 创建一个 ContextIdContextId 只是一个可序列化的上下文标识符。它本身不是上下文值。有关值,请参阅 useContextProvider()useContext()。Qwik 需要一个可序列化的上下文 ID,以便它能够以在可恢复性中存活的方式跟踪上下文提供者和使用者。

示例

// Declare the Context type.
interface TodosStore {
  items: string[];
}
// Create a Context ID (no data is saved here.)
// You will use this ID to both create and retrieve the Context.
export const TodosContext = createContextId<TodosStore>("Todos");
 
// Example of providing context to child components.
export const App = component$(() => {
  useContextProvider(
    TodosContext,
    useStore<TodosStore>({
      items: ["Learn Qwik", "Build Qwik app", "Profit"],
    }),
  );
 
  return <Items />;
});
 
// Example of retrieving the context provided by a parent component.
export const Items = component$(() => {
  const todos = useContext(TodosContext);
  return (
    <ul>
      {todos.items.map((item) => (
        <li>{item}</li>
      ))}
    </ul>
  );
});
export interface ContextId<STATE>

属性

修饰符

类型

描述

__brand_context_type__

readonly

STATE

用于存储上下文类型信息的 design-time 属性。

id

readonly

string

上下文的唯一 ID。

编辑此部分

CorePlatform

平台抽象的低级 API。

不同的平台(浏览器、节点、服务工作者)可能具有不同的处理方式,例如 requestAnimationFrame 和导入。为了使 Qwik 平台独立,Qwik 使用 CorePlatform API 访问平台 API。

CorePlatform 还负责导入符号。客户端(浏览器)上的导入映射与服务器上的导入映射不同。因此,服务器有一个清单,用于将符号映射到 javascript 块。清单封装在 CorePlatform 中,因此,CorePlatform 不能是全局的,因为可能有多个应用程序同时在服务器上运行。

这是一个低级 API,您不应该需要访问它。

export interface CorePlatform

属性

修饰符

类型

描述

chunkForSymbol

(symbolName: string, chunk: string | null, parent?: string) => readonly [symbol: string, chunk: string] | undefined

检索符号的块名称。

当应用程序在服务器上运行时,符号可能从不同的文件导入(因为服务器构建通常是一个 javascript 块)。因此,有必要将块从服务器格式转换为客户端(浏览器)格式。这是通过在清单中查找符号(它们是全局唯一的)来完成的。(清单是符号到客户端块名称的映射。)

importSymbol

(containerEl: Element | undefined, url: string | URL | undefined | null, symbol: string) => ValueOrPromise<any>

从 QRL 检索符号值。

Qwik 需要延迟加载数据和闭包。为此,Qwik 使用 QRL,它们是所需资源的可序列化引用。QRL 包含使用 importSymbol 检索引用所需的所有信息。

为什么不使用 import()?因为 import() 相对于当前文件,而当前文件始终是 Qwik 框架。因此,QRL 具有允许它们序列化相对于应用程序基础而不是 Qwik 框架文件的导入的附加信息。

isServer

boolean

在服务器平台上运行时为真。

nextTick

(fn: () => any) => Promise<any>

在下一个滴答声执行操作。

raf

(fn: () => any) => Promise<any>

在下一个请求动画帧执行操作。

编辑此部分

CorrectedToggleEvent

这修正了 ToggleEvent 的 TS 定义

export interface CorrectedToggleEvent extends Event

扩展: Event

属性

修饰符

类型

描述

newState

readonly

'open' | 'closed'

prevState

readonly

'open' | 'closed'

编辑此部分

createComputed$

警告:此 API 现已过时。

这是一个技术预览

返回一个只读信号,该信号在 ComputedFn 中使用的信号更改时更新。与 useComputed$ 不同,这不是一个钩子,它总是创建一个新的信号。

createComputed$: <T>(qrl: ComputedFn<T>) => Signal<Awaited<T>>;

参数

类型

描述

qrl

ComputedFn<T>

Signal<Awaited<T>>

编辑此部分

createComputedQrl

createComputedQrl: <T>(qrl: QRL<ComputedFn<T>>) => Signal<Awaited<T>>;

参数

类型

描述

qrl

QRL<ComputedFn<T>>

Signal<Awaited<T>>

编辑此部分

createContextId

创建要在您的应用程序中使用的上下文 ID。名称应不带空格。

上下文是一种在不进行道具传递的情况下将存储传递给子组件的方式。

使用 createContextId() 创建一个 ContextIdContextId 只是一个可序列化的上下文标识符。它本身不是上下文值。有关值,请参阅 useContextProvider()useContext()。Qwik 需要一个可序列化的上下文 ID,以便它能够以在可恢复性中存活的方式跟踪上下文提供者和使用者。

示例

// Declare the Context type.
interface TodosStore {
  items: string[];
}
// Create a Context ID (no data is saved here.)
// You will use this ID to both create and retrieve the Context.
export const TodosContext = createContextId<TodosStore>("Todos");
 
// Example of providing context to child components.
export const App = component$(() => {
  useContextProvider(
    TodosContext,
    useStore<TodosStore>({
      items: ["Learn Qwik", "Build Qwik app", "Profit"],
    }),
  );
 
  return <Items />;
});
 
// Example of retrieving the context provided by a parent component.
export const Items = component$(() => {
  const todos = useContext(TodosContext);
  return (
    <ul>
      {todos.items.map((item) => (
        <li>{item}</li>
      ))}
    </ul>
  );
});
createContextId: <STATE = unknown>(name: string) => ContextId<STATE>;

参数

类型

描述

name

string

上下文的名称。

ContextId<STATE>

编辑此部分

createSignal

警告:此 API 现已过时。

这是一个技术预览

创建一个信号。

如果初始状态是函数,则会调用该函数以计算实际的初始状态。

createSignal: UseSignal;

编辑此部分

CSSProperties

export interface CSSProperties extends CSS.Properties<string | number>, CSS.PropertiesHyphen<string | number>

扩展: CSS.Properties<string | number>, CSS.PropertiesHyphen<string | number>

编辑此部分

DataHTMLAttributes

export interface DataHTMLAttributes<T extends Element> extends Attrs<'data', T>

扩展: Attrs<'data', T>

编辑此部分

DelHTMLAttributes

export interface DelHTMLAttributes<T extends Element> extends Attrs<'del', T>

扩展: Attrs<'del', T>

编辑此部分

DetailsHTMLAttributes

export interface DetailsHTMLAttributes<T extends Element> extends Attrs<'details', T>

扩展: Attrs<'details', T>

编辑此部分

DevJSX

export interface DevJSX

属性

修饰符

类型

描述

columnNumber

number

fileName

string

lineNumber

number

stack?

string

(可选)

编辑此部分

DialogHTMLAttributes

export interface DialogHTMLAttributes<T extends Element> extends Attrs<'dialog', T>

扩展: Attrs<'dialog', T>

编辑此部分

DOMAttributes

DOM 元素接受的 Qwik 特定属性

export interface DOMAttributes<EL extends Element> extends DOMAttributesBase<EL>, QwikEvents<EL>

扩展: DOMAttributesBase<EL>, QwikEvents<EL>

属性

修饰符

类型

描述

class?

ClassList | Signal<ClassList> | undefined

(可选)

编辑此部分

EagernessOptions

export type EagernessOptions = "visible" | "load" | "idle";

编辑此部分

Element

type Element = JSXOutput;

参考: JSXOutput

ElementChildrenAttribute

interface ElementChildrenAttribute

属性

修饰符

类型

描述

children

JSXChildren

ElementType

type ElementType = string | FunctionComponent<Record<any, any>>;

参考: FunctionComponent

EmbedHTMLAttributes

export interface EmbedHTMLAttributes<T extends Element> extends Attrs<'embed', T>

扩展: Attrs<'embed', T>

编辑此部分

ErrorBoundaryStore

export interface ErrorBoundaryStore

属性

修饰符

类型

描述

error

any | undefined

编辑此部分

event$

event$: <T>(qrl: T) => QRL<T>;

参数

类型

描述

qrl

T

QRL<T>

编辑此部分

EventHandler

DOM 事件处理程序

export type EventHandler<EV = Event, EL = Element> = {
  bivarianceHack(event: EV, element: EL): any;
}["bivarianceHack"];

编辑此部分

eventQrl

eventQrl: <T>(qrl: QRL<T>) => QRL<T>;

参数

类型

描述

qrl

QRL<T>

QRL<T>

编辑此部分

FieldsetHTMLAttributes

export interface FieldsetHTMLAttributes<T extends Element> extends Attrs<'fieldset', T>

扩展: Attrs<'fieldset', T>

编辑此部分

FormHTMLAttributes

export interface FormHTMLAttributes<T extends Element> extends Attrs<'form', T>

扩展: Attrs<'form', T>

编辑此部分

Fragment

Fragment: FunctionComponent<{
  children?: any;
  key?: string | number | null;
}>;

编辑此部分

FunctionComponent

任何接受 props 对象并返回 JSXOutput 的函数。

keyflagsdev 参数用于内部使用。

export type FunctionComponent<P = unknown> = {
  renderFn(
    props: P,
    key: string | null,
    flags: number,
    dev?: DevJSX,
  ): JSXOutput;
}["renderFn"];

参考: DevJSXJSXOutput

编辑此部分

getPlatform

检索 CorePlatform

CorePlatform 还负责检索 Manifest,其中包含符号到 JavaScript 导入块的映射。因此,CorePlatform 不能是全局的,而是特定于当前运行的应用程序。在服务器上,可能有多个不同的应用程序在单个服务器实例中运行,因此 CorePlatform 与应用程序文档相关联。

getPlatform: () => CorePlatform;

返回值

CorePlatform

编辑此部分

h

export declare namespace h

函数

描述

h(type)

h(type, data)

h(type, text)

h(type, children)

h(type, data, text)

h(type, data, children)

h(sel, data, children)

编辑此部分

h

export declare namespace h

函数

描述

h(type)

h(type, data)

h(type, text)

h(type, children)

h(type, data, text)

h(type, data, children)

h(sel, data, children)

编辑此部分

HrHTMLAttributes

export interface HrHTMLAttributes<T extends Element> extends Attrs<'hr', T>

扩展: Attrs<'hr', T>

编辑此部分

HTMLAttributeAnchorTarget

export type HTMLAttributeAnchorTarget =
  | "_self"
  | "_blank"
  | "_parent"
  | "_top"
  | (string & {});

编辑此部分

HTMLAttributeReferrerPolicy

export type HTMLAttributeReferrerPolicy = ReferrerPolicy;

编辑此部分

HTMLAttributes

export interface HTMLAttributes<E extends Element> extends HTMLElementAttrs, DOMAttributes<E>

扩展: HTMLElementAttrsDOMAttributes<E>

编辑此部分

HTMLCrossOriginAttribute

export type HTMLCrossOriginAttribute =
  | "anonymous"
  | "use-credentials"
  | ""
  | undefined;

编辑此部分

HTMLElementAttrs

export interface HTMLElementAttrs extends HTMLAttributesBase, FilterBase<HTMLElement>

扩展: HTMLAttributesBase、FilterBase<HTMLElement>

编辑此部分

HTMLFragment

HTMLFragment: FunctionComponent<{
  dangerouslySetInnerHTML: string;
}>;

编辑此部分

HtmlHTMLAttributes

export interface HtmlHTMLAttributes<T extends Element> extends Attrs<'html', T>

扩展: Attrs<'html', T>

编辑此部分

HTMLInputAutocompleteAttribute

export type HTMLInputAutocompleteAttribute =
  | "on"
  | "off"
  | "billing"
  | "shipping"
  | "name"
  | "honorific-prefix"
  | "given-name"
  | "additional-name"
  | "family-name"
  | "honorific-suffix"
  | "nickname"
  | "username"
  | "new-password"
  | "current-password"
  | "one-time-code"
  | "organization-title"
  | "organization"
  | "street-address"
  | "address-line1"
  | "address-line2"
  | "address-line3"
  | "address-level4"
  | "address-level3"
  | "address-level2"
  | "address-level1"
  | "country"
  | "country-name"
  | "postal-code"
  | "cc-name"
  | "cc-given-name"
  | "cc-additional-name"
  | "cc-family-name"
  | "cc-number"
  | "cc-exp"
  | "cc-exp-month"
  | "cc-exp-year"
  | "cc-csc"
  | "cc-type"
  | "transaction-currency"
  | "transaction-amount"
  | "language"
  | "bday"
  | "bday-day"
  | "bday-month"
  | "bday-year"
  | "sex"
  | "url"
  | "photo";

编辑此部分

HTMLInputTypeAttribute

export type HTMLInputTypeAttribute =
  | "button"
  | "checkbox"
  | "color"
  | "date"
  | "datetime-local"
  | "email"
  | "file"
  | "hidden"
  | "image"
  | "month"
  | "number"
  | "password"
  | "radio"
  | "range"
  | "reset"
  | "search"
  | "submit"
  | "tel"
  | "text"
  | "time"
  | "url"
  | "week"
  | (string & {});

编辑此部分

IframeHTMLAttributes

export interface IframeHTMLAttributes<T extends Element> extends Attrs<'iframe', T>

扩展: Attrs<'iframe', T>

编辑此部分

ImgHTMLAttributes

export interface ImgHTMLAttributes<T extends Element> extends Attrs<'img', T>

扩展: Attrs<'img', T>

编辑此部分

implicit$FirstArg

___(...) 创建一个 ____$(...) 方便方法。

函数通常以延迟加载的资源作为第一个参数。因此,Qwik 优化器会自动从任何以 $ 结尾的函数中提取第一个参数。

这意味着 foo$(arg0)foo($(arg0)) 在 Qwik 优化器方面是等效的。前者只是后者的简写。

例如,以下函数调用是等效的

  • component$(() => {...}) 等同于 component($(() => {...}))
export function myApi(callback: QRL<() => void>): void {
  // ...
}
 
export const myApi$ = implicit$FirstArg(myApi);
// type of myApi$: (callback: () => void): void
 
// can be used as:
myApi$(() => console.log("callback"));
 
// will be transpiled to:
// FILE: <current file>
myApi(qrl("./chunk-abc.js", "callback"));
 
// FILE: chunk-abc.js
export const callback = () => console.log("callback");
implicit$FirstArg: <FIRST, REST extends any[], RET>(
    fn: (qrl: QRL<FIRST>, ...rest: REST) => RET,
  ) =>
  (qrl: FIRST, ...rest: REST) =>
    RET;

参数

类型

描述

fn

(qrl: QRL<FIRST>, ...rest: REST) => RET

一个函数,其第一个参数应该自动 $

((qrl: FIRST, ...rest: REST) => RET)

编辑此部分

InputHTMLAttributes

export type InputHTMLAttributes<T extends Element> = Attrs<
  "input",
  T,
  HTMLInputElement
>;

编辑此部分

InsHTMLAttributes

export interface InsHTMLAttributes<T extends Element> extends Attrs<'ins', T>

扩展: Attrs<'ins', T>

编辑此部分

IntrinsicAttributes

interface IntrinsicAttributes extends QwikIntrinsicAttributes

扩展: QwikIntrinsicAttributes

IntrinsicElements

export interface IntrinsicElements extends IntrinsicHTMLElements, IntrinsicSVGElements

扩展: IntrinsicHTMLElements、IntrinsicSVGElements

编辑此部分

isSignal

检查给定对象是否为 Signal

isSignal: <T = unknown>(obj: any) => obj is Signal<T>

参数

类型

描述

obj

any

要检查是否为 Signal 的对象。

obj is Signal<T>

布尔值 - 如果对象是 Signal,则为 True。

编辑此部分

jsx

由 JSX 转译器用于创建 JSXNode。请注意,优化器不会使用它,而是直接使用 _jsxQ、_jsxS 和 _jsxC。

jsx: <T extends string | FunctionComponent<any>>(
  type: T,
  props: T extends FunctionComponent<infer PROPS>
    ? PROPS
    : Record<any, unknown>,
  key?: string | number | null,
) => JSXNode<T>;

参数

类型

描述

type

T

props

T extends FunctionComponent<infer PROPS> ? PROPS : Record<any, unknown>

key

string | number | null

(可选)

JSXNode<T>

编辑此部分

JSXChildren

export type JSXChildren =
  | string
  | number
  | boolean
  | null
  | undefined
  | Function
  | RegExp
  | JSXChildren[]
  | Promise<JSXChildren>
  | Signal<JSXChildren>
  | JSXNode;

参考: JSXChildrenSignalJSXNode

编辑此部分

jsxDEV

jsxDEV: <T extends string | FunctionComponent<Record<any, unknown>>>(
  type: T,
  props: T extends FunctionComponent<infer PROPS>
    ? PROPS
    : Record<any, unknown>,
  key: string | number | null | undefined,
  _isStatic: boolean,
  opts: JsxDevOpts,
  _ctx: unknown,
) => JSXNode<T>;

参数

类型

描述

type

T

props

T extends FunctionComponent<infer PROPS> ? PROPS : Record<any, unknown>

key

string | number | null | undefined

_isStatic

boolean

opts

JsxDevOpts

_ctx

unknown

JSXNode<T>

编辑此部分

JSXNode

JSX 节点,内部结构。您可能希望使用 JSXOutput 代替。

export interface JSXNode<T extends string | FunctionComponent | unknown = unknown>

属性

修饰符

类型

描述

children

JSXChildren | null

dev?

DevJSX

(可选)

flags

number

immutableProps

Record<any, unknown> | null

key

string | null

props

T extends FunctionComponent<infer P> ? P : Record<any, unknown>

type

T

编辑此部分

JSXOutput

组件的任何有效输出

export type JSXOutput =
  | JSXNode
  | string
  | number
  | boolean
  | null
  | undefined
  | JSXOutput[];

参考: JSXNodeJSXOutput

编辑此部分

JSXTagName

export type JSXTagName =
  | keyof HTMLElementTagNameMap
  | Omit<string, keyof HTMLElementTagNameMap>;

编辑此部分

KeygenHTMLAttributes

警告:此 API 现已过时。

在 html5 中

export interface KeygenHTMLAttributes<T extends Element> extends Attrs<'base', T>

扩展: Attrs<'base', T>

编辑此部分

KnownEventNames

Qwik 知道的事件名称。它们都是小写,但在 JSX 端,它们是大写驼峰式命名,以获得更好的 DX。(onAuxClick$onauxclick$

export type KnownEventNames = LiteralUnion<AllEventKeys, string>;

编辑此部分

LabelHTMLAttributes

export interface LabelHTMLAttributes<T extends Element> extends Attrs<'label', T>

扩展: Attrs<'label', T>

编辑此部分

LiHTMLAttributes

export interface LiHTMLAttributes<T extends Element> extends Attrs<'li', T>

扩展: Attrs<'li', T>

编辑此部分

LinkHTMLAttributes

export interface LinkHTMLAttributes<T extends Element> extends Attrs<'link', T>

扩展: Attrs<'link', T>

编辑此部分

MapHTMLAttributes

export interface MapHTMLAttributes<T extends Element> extends Attrs<'map', T>

扩展: Attrs<'map', T>

编辑此部分

MediaHTMLAttributes

export interface MediaHTMLAttributes<T extends Element> extends HTMLAttributes<T>, Augmented<HTMLMediaElement, {
    crossOrigin?: HTMLCrossOriginAttribute;
}>

扩展: HTMLAttributes<T>、Augmented<HTMLMediaElement, { crossOrigin?: HTMLCrossOriginAttribute; }>

属性

修饰符

类型

描述

crossOrigin?

HTMLCrossOriginAttribute

(可选)

编辑此部分

export interface MenuHTMLAttributes<T extends Element> extends Attrs<'menu', T>

扩展: Attrs<'menu', T>

编辑此部分

MetaHTMLAttributes

export interface MetaHTMLAttributes<T extends Element> extends Attrs<'meta', T>

扩展: Attrs<'meta', T>

编辑此部分

MeterHTMLAttributes

export interface MeterHTMLAttributes<T extends Element> extends Attrs<'meter', T>

扩展: Attrs<'meter', T>

编辑此部分

NativeAnimationEvent

警告:此 API 现已过时。

使用 AnimationEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeAnimationEvent = AnimationEvent;

编辑此部分

NativeClipboardEvent

警告:此 API 现已过时。

使用 ClipboardEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeClipboardEvent = ClipboardEvent;

编辑此部分

NativeCompositionEvent

警告:此 API 现已过时。

使用 CompositionEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeCompositionEvent = CompositionEvent;

编辑此部分

NativeDragEvent

警告:此 API 现已过时。

使用 DragEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeDragEvent = DragEvent;

编辑此部分

NativeFocusEvent

警告:此 API 现已过时。

使用 FocusEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeFocusEvent = FocusEvent;

编辑此部分

NativeKeyboardEvent

警告:此 API 现已过时。

使用 KeyboardEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeKeyboardEvent = KeyboardEvent;

编辑此部分

NativeMouseEvent

警告:此 API 现已过时。

使用 MouseEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeMouseEvent = MouseEvent;

编辑此部分

NativePointerEvent

警告:此 API 现已过时。

使用 PointerEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativePointerEvent = PointerEvent;

编辑此部分

NativeTouchEvent

警告:此 API 现已过时。

使用 TouchEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeTouchEvent = TouchEvent;

编辑此部分

NativeTransitionEvent

警告:此 API 现已过时。

使用 TransitionEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeTransitionEvent = TransitionEvent;

编辑此部分

NativeUIEvent

警告:此 API 现已过时。

使用 UIEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeUIEvent = UIEvent;

编辑此部分

NativeWheelEvent

警告:此 API 现已过时。

使用 WheelEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type NativeWheelEvent = WheelEvent;

编辑此部分

noSerialize

noSerialize() 函数的返回值类型。它将是 TYPE 或 undefined。

export type NoSerialize<T> =
  | (T & {
      __no_serialize__: true;
    })
  | undefined;

编辑此部分

NoSerialize

noSerialize() 函数的返回值类型。它将是 TYPE 或 undefined。

export type NoSerialize<T> =
  | (T & {
      __no_serialize__: true;
    })
  | undefined;

编辑此部分

Numberish

export type Numberish = number | `${number}`;

编辑此部分

ObjectHTMLAttributes

export interface ObjectHTMLAttributes<T extends Element> extends Attrs<'object', T>

扩展: Attrs<'object', T>

编辑此部分

OlHTMLAttributes

export interface OlHTMLAttributes<T extends Element> extends Attrs<'ol', T>

扩展: Attrs<'ol', T>

编辑此部分

OnRenderFn

export type OnRenderFn<PROPS> = (props: PROPS) => JSXOutput;

参考: JSXOutput

编辑此部分

OnVisibleTaskOptions

export interface OnVisibleTaskOptions

属性

修饰符

类型

描述

strategy?

VisibleTaskStrategy

(可选) 用于确定“VisibleTask”何时应首次执行的策略。

  • intersection-observer:当元素在视窗中可见时,任务将首次执行,它在幕后使用 IntersectionObserver API。 - document-ready:当文档准备就绪时,任务将首次执行,它在幕后使用文档 load 事件。 - document-idle:当文档处于空闲状态时,任务将首次执行,它在幕后使用 requestIdleCallback API。

编辑此部分

OptgroupHTMLAttributes

export interface OptgroupHTMLAttributes<T extends Element> extends Attrs<'optgroup', T>

扩展: Attrs<'optgroup', T>

编辑此部分

OptionHTMLAttributes

export interface OptionHTMLAttributes<T extends Element> extends Attrs<'option', T>

扩展: Attrs<'option', T>

编辑此部分

OutputHTMLAttributes

export interface OutputHTMLAttributes<T extends Element> extends Attrs<'output', T>

扩展: Attrs<'output', T>

编辑此部分

ParamHTMLAttributes

警告:此 API 现已过时。

旧 DOM API

export interface ParamHTMLAttributes<T extends Element> extends Attrs<'base', T, HTMLParamElement>

扩展: Attrs<'base', T, HTMLParamElement>

编辑此部分

PrefetchGraph

此 API 作为开发者预览版提供,可能会根据我们收到的反馈进行更改。请勿在生产环境中使用此 API。

加载容器的预取图。

每个 Qwik 容器都需要包含它自己的预取图。

PrefetchGraph: (opts?: {
  base?: string;
  manifestHash?: string;
  manifestURL?: string;
  nonce?: string;
}) => JSXNode<"script">;

参数

类型

描述

opts

{ base?: string; manifestHash?: string; manifestURL?: string; nonce?: string; }

(可选) 加载预取图的选项。

  • base - 图表的基础路径。对于默认安装,它将默认为 q:base 值 /build/。但如果页面上安装了多个 MFE,则每个 MFE 都需要有自己的基础路径。 - manifestHash - 要加载的清单文件的哈希值。如果未提供,则哈希值将从容器属性 q:manifest-hash 中提取,并假设默认构建文件为 ${base}/q-bundle-graph-${manifestHash}.json。 - manifestURL - 要加载的清单文件的 URL,如果使用非标准捆绑图表位置名称。

JSXNode<"script">

编辑此部分

PrefetchServiceWorker

此 API 作为开发者预览版提供,可能会根据我们收到的反馈进行更改。请勿在生产环境中使用此 API。

安装一个服务工作者,它将预取捆绑包。

每个页面只能有一个服务工作者。由于页面上可能存在多个独立的 Qwik 容器,因此每个容器都需要使用 PrefetchGraph 组件加载其预取图表。

PrefetchServiceWorker: (opts: {
  base?: string;
  scope?: string;
  path?: string;
  verbose?: boolean;
  fetchBundleGraph?: boolean;
  nonce?: string;
}) => JSXNode<"script">;

参数

类型

描述

opts

{ base?: string; scope?: string; path?: string; verbose?: boolean; fetchBundleGraph?: boolean; nonce?: string; }

预取服务工作者的选项。

  • base - 服务工作者的基本 URL import.meta.env.BASE_URL/。默认值为 import.meta.env.BASE_URL - scope - 服务工作者激活时的基本 URL。默认值为 / - path - 服务工作者的路径。默认值为 qwik-prefetch-service-worker.js,除非您传递以 / 开头的路径,否则将忽略基本路径。默认值为 qwik-prefetch-service-worker.js - verbose - 服务工作者安装的详细日志记录。默认值为 false - nonce - 用于安全目的的可选 nonce 值,默认为 undefined

JSXNode<'script'>

编辑此部分

ProgressHTMLAttributes

export interface ProgressHTMLAttributes<T extends Element> extends Attrs<'progress', T>

扩展: Attrs<'progress', T>

编辑此部分

PropFnInterface

警告:此 API 现已过时。

使用 QRL<> 代替

export type PropFnInterface<ARGS extends any[], RET> = {
  __qwik_serializable__?: any;
  (...args: ARGS): Promise<RET>;
};

编辑此部分

PropFunction

QRL<T> 的别名。仅具有历史意义。

export type PropFunction<T> = QRL<T>;

参考: QRL

编辑此部分

PropFunctionProps

警告:此 API 现已过时。

在您的函数道具上使用 QRL<> 代替

export type PropFunctionProps<PROPS extends Record<any, any>> = {
  [K in keyof PROPS]: PROPS[K] extends undefined
    ? PROPS[K]
    : PROPS[K] extends ((...args: infer ARGS) => infer RET) | undefined
      ? PropFnInterface<ARGS, Awaited<RET>>
      : PROPS[K];
};

参考: PropFnInterface

编辑此部分

PropsOf

从组件或标签推断 Props

export type PropsOf<COMP> = COMP extends string
  ? COMP extends keyof QwikIntrinsicElements
    ? QwikIntrinsicElements[COMP]
    : QwikIntrinsicElements["span"]
  : NonNullable<COMP> extends never
    ? never
    : COMP extends FunctionComponent<infer PROPS>
      ? PROPS extends Record<any, infer V>
        ? IsAny<V> extends true
          ? never
          : ObjectProps<PROPS>
        : COMP extends Component<infer OrigProps>
          ? ObjectProps<OrigProps>
          : PROPS
      : never;

参考: QwikIntrinsicElements, FunctionComponent, Component

const Desc = component$(
  ({ desc, ...props }: { desc: string } & PropsOf<"div">) => {
    return <div {...props}>{desc}</div>;
  },
);
 
const TitleBox = component$(
  ({ title, ...props }: { title: string } & PropsOf<Box>) => {
    return (
      <Box {...props}>
        <h1>{title}</h1>
      </Box>
    );
  },
);

编辑此部分

PublicProps

扩展定义的组件 PROPS,添加默认值(children 和 q:slot),并允许将普通函数作为 QRL 参数。

export type PublicProps<PROPS> = (PROPS extends Record<any, any>
  ? Omit<PROPS, `${string}$`> & _Only$<PROPS>
  : unknown extends PROPS
    ? {}
    : PROPS) &
  ComponentBaseProps &
  ComponentChildren<PROPS>;

参考: ComponentBaseProps

编辑此部分

qrl

QRL 类型表示一个可延迟加载且可序列化的资源。

QRL 代表 Qwik URL。

当您想要引用一个延迟加载的资源时,请使用 QRLQRL 最常用于代码(函数),但也可以用于其他资源,例如在样式的情况下使用 string

QRL 是由 Qwik 优化器生成的透明令牌。(不要依赖 QRL 中的任何属性,因为它可能会在不同版本之间发生变化。)

## 创建 QRL 引用

创建 QRL 是使用 $(...) 函数完成的。$(...) 是 Qwik 优化器的特殊标记,它标记代码应该被提取到一个延迟加载的符号中。

useOnDocument(
  "mousemove",
  $((event) => console.log("mousemove", event)),
);

在上面的代码中,Qwik 优化器检测到 $(...) 并按如下所示转换代码

// FILE: <current file>
useOnDocument("mousemove", qrl("./chunk-abc.js", "onMousemove"));
 
// FILE: chunk-abc.js
export const onMousemove = () => console.log("mousemove");

注意:qrl(...) 是 Qwik 优化器转换的结果。您永远不必在应用程序中直接调用此函数。qrl(...) 函数应该只在 Qwik 优化器转换之后调用。

## 使用 QRL

当您想要获取对资源(最可能是函数)的延迟加载引用时,请在您的应用程序中使用 QRL 类型。

// Example of declaring a custom functions which takes callback as QRL.
export function useMyFunction(callback: QRL<() => void>) {
  doExtraStuff();
  // The callback passed to `onDocument` requires `QRL`.
  useOnDocument("mousemove", callback);
}

在上面的示例中,代码的思考方式是您不是在请求回调函数,而是在请求对延迟加载的回调函数的引用。具体来说,函数加载应该延迟到实际需要它的时候。在上面的示例中,该函数只有在 document 上的 mousemove 事件触发后才会加载。

## 解析 QRL 引用

有时可能需要将 QRL 引用解析为实际值。这可以使用 QRL.resolve(..) 函数执行。

// Assume you have QRL reference to a greet function
const lazyGreet: QRL<() => void> = $(() => console.log("Hello World!"));
 
// Use `qrlImport` to load / resolve the reference.
const greet: () => void = await lazyGreet.resolve();
 
//  Invoke it
greet();

注意:需要 element,因为 QRL 是相对的,需要一个基本位置才能解析。基本位置以 <div q:base="/url"> 的形式编码在 HTML 中。

## QRL.resolved

一旦 QRL.resolve() 返回,该值将存储在 QRL.resolved 下。这允许使用该值,而无需再次等待 QRL.resolve()

## 问题:为什么不直接使用 import()

乍一看,QRLimport() 的作用相同。但是,需要考虑三个细微的差异。

  1. QRL 必须可序列化为 HTML。2. QRL 必须由框架相对于 q:base 解析。3. QRL 必须能够捕获词法范围内的变量。4. QRL 封装了使用和不使用 Qwik 优化器之间的差异。5. QRL 允许在不考虑块和符号名称的情况下表达延迟加载边界。

假设您打算编写如下代码

return <button onClick={() => (await import('./chunk-abc.js')).onClick}>

上面的代码需要序列化为 DOM,例如

<div q:base="/build/">
  <button on:click="./chunk-abc.js#onClick">...</button>
</div>
  1. 注意,没有简单的方法可以将块(./chunk-abc.js)和符号(onClick)提取到 HTML 中。2. 注意,即使您可以提取它,import('./chunk-abc.js') 也会相对于声明 import() 文件的位置变得相对。因为它是由我们的框架执行加载的,所以 ./chunk-abc.js 会相对于框架文件变得相对。这是不正确的,因为它应该相对于捆绑器生成的原始文件。3. 接下来,框架需要解析 ./chunk-abc.js,并且需要一个在 HTML 中编码的基本位置。4. QRL 需要能够捕获词法范围内的变量。(import() 仅允许加载不捕获变量的顶层符号。)5. 作为开发人员,您不想考虑 import 以及块和符号的命名。您只想说:“这应该是延迟的。”

这些是 Qwik 引入其自身 QRL 概念的主要原因。

export type QRL<TYPE = unknown> = {
  __qwik_serializable__?: any;
  __brand__QRL__: TYPE;
  resolve(): Promise<TYPE>;
  resolved: undefined | TYPE;
  getCaptured(): unknown[] | null;
  getSymbol(): string;
  getHash(): string;
  dev: QRLDev | null;
} & BivariantQrlFn<QrlArgs<TYPE>, QrlReturn<TYPE>>;

编辑此部分

QRL

QRL 类型表示一个可延迟加载且可序列化的资源。

QRL 代表 Qwik URL。

当您想要引用一个延迟加载的资源时,请使用 QRLQRL 最常用于代码(函数),但也可以用于其他资源,例如在样式的情况下使用 string

QRL 是由 Qwik 优化器生成的透明令牌。(不要依赖 QRL 中的任何属性,因为它可能会在不同版本之间发生变化。)

## 创建 QRL 引用

创建 QRL 是使用 $(...) 函数完成的。$(...) 是 Qwik 优化器的特殊标记,它标记代码应该被提取到一个延迟加载的符号中。

useOnDocument(
  "mousemove",
  $((event) => console.log("mousemove", event)),
);

在上面的代码中,Qwik 优化器检测到 $(...) 并按如下所示转换代码

// FILE: <current file>
useOnDocument("mousemove", qrl("./chunk-abc.js", "onMousemove"));
 
// FILE: chunk-abc.js
export const onMousemove = () => console.log("mousemove");

注意:qrl(...) 是 Qwik 优化器转换的结果。您永远不必在应用程序中直接调用此函数。qrl(...) 函数应该只在 Qwik 优化器转换之后调用。

## 使用 QRL

当您想要获取对资源(最可能是函数)的延迟加载引用时,请在您的应用程序中使用 QRL 类型。

// Example of declaring a custom functions which takes callback as QRL.
export function useMyFunction(callback: QRL<() => void>) {
  doExtraStuff();
  // The callback passed to `onDocument` requires `QRL`.
  useOnDocument("mousemove", callback);
}

在上面的示例中,代码的思考方式是您不是在请求回调函数,而是在请求对延迟加载的回调函数的引用。具体来说,函数加载应该延迟到实际需要它的时候。在上面的示例中,该函数只有在 document 上的 mousemove 事件触发后才会加载。

## 解析 QRL 引用

有时可能需要将 QRL 引用解析为实际值。这可以使用 QRL.resolve(..) 函数执行。

// Assume you have QRL reference to a greet function
const lazyGreet: QRL<() => void> = $(() => console.log("Hello World!"));
 
// Use `qrlImport` to load / resolve the reference.
const greet: () => void = await lazyGreet.resolve();
 
//  Invoke it
greet();

注意:需要 element,因为 QRL 是相对的,需要一个基本位置才能解析。基本位置以 <div q:base="/url"> 的形式编码在 HTML 中。

## QRL.resolved

一旦 QRL.resolve() 返回,该值将存储在 QRL.resolved 下。这允许使用该值,而无需再次等待 QRL.resolve()

## 问题:为什么不直接使用 import()

乍一看,QRLimport() 的作用相同。但是,需要考虑三个细微的差异。

  1. QRL 必须可序列化为 HTML。2. QRL 必须由框架相对于 q:base 解析。3. QRL 必须能够捕获词法范围内的变量。4. QRL 封装了使用和不使用 Qwik 优化器之间的差异。5. QRL 允许在不考虑块和符号名称的情况下表达延迟加载边界。

假设您打算编写如下代码

return <button onClick={() => (await import('./chunk-abc.js')).onClick}>

上面的代码需要序列化为 DOM,例如

<div q:base="/build/">
  <button on:click="./chunk-abc.js#onClick">...</button>
</div>
  1. 注意,没有简单的方法可以将块(./chunk-abc.js)和符号(onClick)提取到 HTML 中。2. 注意,即使您可以提取它,import('./chunk-abc.js') 也会相对于声明 import() 文件的位置变得相对。因为它是由我们的框架执行加载的,所以 ./chunk-abc.js 会相对于框架文件变得相对。这是不正确的,因为它应该相对于捆绑器生成的原始文件。3. 接下来,框架需要解析 ./chunk-abc.js,并且需要一个在 HTML 中编码的基本位置。4. QRL 需要能够捕获词法范围内的变量。(import() 仅允许加载不捕获变量的顶层符号。)5. 作为开发人员,您不想考虑 import 以及块和符号的命名。您只想说:“这应该是延迟的。”

这些是 Qwik 引入其自身 QRL 概念的主要原因。

export type QRL<TYPE = unknown> = {
  __qwik_serializable__?: any;
  __brand__QRL__: TYPE;
  resolve(): Promise<TYPE>;
  resolved: undefined | TYPE;
  getCaptured(): unknown[] | null;
  getSymbol(): string;
  getHash(): string;
  dev: QRLDev | null;
} & BivariantQrlFn<QrlArgs<TYPE>, QrlReturn<TYPE>>;

编辑此部分

QRLEventHandlerMulti

此 API 作为开发人员的测试版预览提供,可能会根据我们收到的反馈进行更改。请勿在生产环境中使用此 API。

Qwik 事件的事件处理程序,可以是处理程序 QRL 或处理程序 QRL 数组。

export type QRLEventHandlerMulti<EV extends Event, EL> =
  | QRL<EventHandler<EV, EL>>
  | undefined
  | null
  | QRLEventHandlerMulti<EV, EL>[]
  | EventHandler<EV, EL>;

参考: QRL, EventHandler, QRLEventHandlerMulti

编辑此部分

QuoteHTMLAttributes

export interface QuoteHTMLAttributes<T extends Element> extends Attrs<'q', T>

扩展: Attrs<'q', T>

编辑此部分

QwikAnimationEvent

警告:此 API 现已过时。

使用 AnimationEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikAnimationEvent<T = Element> = NativeAnimationEvent;

参考: NativeAnimationEvent

编辑此部分

QwikAttributes

Qwik DOM 属性,不包含普通处理程序,用于作为函数参数

export interface QwikAttributes<EL extends Element> extends DOMAttributesBase<EL>, QwikEvents<EL, false>

扩展: DOMAttributesBase<EL>, QwikEvents<EL, false>

属性

修饰符

类型

描述

class?

ClassList | undefined

(可选)

编辑此部分

QwikChangeEvent

警告:此 API 现已过时。

使用 Event,并使用处理程序函数的第二个参数作为当前事件目标。另请注意,在 Qwik 中,使用 InputEvent 的 onInput$ 是像 React 中的 onChange 一样工作的事件。

export type QwikChangeEvent<T = Element> = Event;

编辑此部分

QwikClipboardEvent

警告:此 API 现已过时。

使用 ClipboardEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikClipboardEvent<T = Element> = NativeClipboardEvent;

参考: NativeClipboardEvent

编辑此部分

QwikCompositionEvent

警告:此 API 现已过时。

使用 CompositionEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikCompositionEvent<T = Element> = NativeCompositionEvent;

参考: NativeCompositionEvent

编辑此部分

QwikDOMAttributes

export interface QwikDOMAttributes extends DOMAttributes<Element>

扩展: DOMAttributes<Element>

编辑此部分

QwikDragEvent

警告:此 API 现已过时。

使用 DragEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikDragEvent<T = Element> = NativeDragEvent;

参考: NativeDragEvent

编辑此部分

QwikFocusEvent

警告:此 API 现已过时。

使用 FocusEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikFocusEvent<T = Element> = NativeFocusEvent;

参考: NativeFocusEvent

编辑此部分

QwikHTMLElements

DOM 属性,不包含普通处理程序,用于在函数内部使用

export type QwikHTMLElements = {
  [tag in keyof HTMLElementTagNameMap]: Augmented<
    HTMLElementTagNameMap[tag],
    SpecialAttrs[tag]
  > &
    HTMLElementAttrs &
    QwikAttributes<HTMLElementTagNameMap[tag]>;
};

参考: HTMLElementAttrs, QwikAttributes

编辑此部分

QwikIdleEvent

在文档首次变为空闲时由 qwik-loader 在文档上发出

export type QwikIdleEvent = CustomEvent<{}>;

编辑此部分

QwikInitEvent

在文档首次变为交互式时由 qwik-loader 在文档上发出

export type QwikInitEvent = CustomEvent<{}>;

编辑此部分

QwikIntrinsicElements

该接口包含本机 DOM 元素和自定义 Qwik 元素的可用属性。一个示例展示了如何定义一个可自定义的包装器组件

import { component$, Slot, type QwikIntrinsicElements } from "@builder.io/qwik";
 
type WrapperProps = {
  attributes?: QwikIntrinsicElements["div"];
};
 
export default component$<WrapperProps>(({ attributes }) => {
  return (
    <div {...attributes} class="p-2">
      <Slot />
    </div>
  );
});

注意:使用 PropsOf<'div'> 更短

export interface QwikIntrinsicElements extends QwikHTMLElements, QwikSVGElements

扩展: QwikHTMLElements, QwikSVGElements

编辑此部分

QwikInvalidEvent

警告:此 API 现已过时。

使用 Event,并使用处理程序函数的第二个参数作为当前事件目标

export type QwikInvalidEvent<T = Element> = Event;

编辑此部分

QwikJSX

export declare namespace QwikJSX

接口

描述

ElementChildrenAttribute

IntrinsicAttributes

IntrinsicElements

类型别名

描述

Element

ElementType

编辑此部分

QwikKeyboardEvent

警告:此 API 现已过时。

使用 KeyboardEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikKeyboardEvent<T = Element> = NativeKeyboardEvent;

参考: NativeKeyboardEvent

编辑此部分

QwikMouseEvent

警告:此 API 现已过时。

使用 MouseEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikMouseEvent<T = Element, E = NativeMouseEvent> = E;

参考: NativeMouseEvent

编辑此部分

QwikPointerEvent

警告:此 API 现已过时。

使用 PointerEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikPointerEvent<T = Element> = NativePointerEvent;

参考: NativePointerEvent

编辑此部分

QwikSubmitEvent

警告:此 API 现已过时。

使用 SubmitEvent,并使用处理程序函数的第二个参数作为当前事件目标

export type QwikSubmitEvent<T = Element> = SubmitEvent;

编辑此部分

QwikSVGElements

SVG 属性,不包含普通处理程序,用于在函数内部使用

export type QwikSVGElements = {
  [K in keyof Omit<
    SVGElementTagNameMap,
    keyof HTMLElementTagNameMap
  >]: SVGProps<SVGElementTagNameMap[K]>;
};

参考: SVGProps

编辑此部分

QwikSymbolEvent

在模块被延迟加载时由 qwik-loader 发出

export type QwikSymbolEvent = CustomEvent<{
  symbol: string;
  element: Element;
  reqTime: number;
}>;

编辑此部分

QwikTouchEvent

警告:此 API 现已过时。

使用 TouchEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikTouchEvent<T = Element> = NativeTouchEvent;

参考: NativeTouchEvent

编辑此部分

QwikTransitionEvent

警告:此 API 现已过时。

使用 TransitionEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikTransitionEvent<T = Element> = NativeTransitionEvent;

参考: NativeTransitionEvent

编辑此部分

QwikUIEvent

警告:此 API 现已过时。

使用 UIEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikUIEvent<T = Element> = NativeUIEvent;

参考: NativeUIEvent

编辑此部分

QwikVisibleEvent

在元素变为可见时由 qwik-loader 发出。由 useVisibleTask$ 使用

export type QwikVisibleEvent = CustomEvent<IntersectionObserverEntry>;

编辑此部分

QwikWheelEvent

警告:此 API 现已过时。

使用 WheelEvent 并使用处理程序函数的第二个参数作为当前事件目标。

export type QwikWheelEvent<T = Element> = NativeWheelEvent;

参考: NativeWheelEvent

编辑此部分

ReadonlySignal

export type ReadonlySignal<T = unknown> = Readonly<Signal<T>>;

参考: Signal

编辑此部分

render

渲染 JSX。

使用此方法渲染 JSX。此函数执行协调,这意味着它始终尝试重用 DOM 中已有的内容(而不是销毁和重新创建内容)。它返回一个清理函数,您可以使用它来清理订阅。

render: (
  parent: Element | Document,
  jsxOutput: JSXOutput | FunctionComponent<any>,
  opts?: RenderOptions,
) => Promise<RenderResult>;

参数

类型

描述

parent

Element | Document

用作jsxNode父级的元素。 渲染时会尽可能重用现有节点。

jsxOutput

JSXOutput | FunctionComponent<any>

要渲染的 JSX

opts

RenderOptions

(可选)

Promise<RenderResult>

包含清理函数的对象。

编辑此部分

RenderOnce

RenderOnce: FunctionComponent<{
  children?: unknown;
  key?: string | number | null | undefined;
}>;

编辑此部分

RenderOptions

export interface RenderOptions

属性

修饰符

类型

描述

serverData?

Record<string, any>

(可选)

编辑此部分

RenderResult

export interface RenderResult

方法

描述

cleanup()

编辑此部分

RenderSSROptions

export interface RenderSSROptions

属性

修饰符

类型

描述

base?

string

(可选)

beforeClose?

(contexts: QContext[], containerState: ContainerState, containsDynamic: boolean, textNodes: Map<string, string>) => Promise<JSXNode>

(可选)

beforeContent?

JSXNode<string>[]

(可选)

containerAttributes

Record<string, string>

containerTagName

string

manifestHash

string

serverData?

Record<string, any>

(可选)

stream

StreamWriter

编辑此部分

Resource

此方法类似于异步记忆函数,它会在某些跟踪值发生变化时运行并返回一些数据。

但是,useResource 会立即返回一个ResourceReturn 对象,该对象包含数据和一个状态,该状态指示数据是否可用。

状态可以是以下之一

  • 'pending' - 数据尚不可用。 - 'resolved' - 数据可用。 - 'rejected' - 数据由于错误或超时而不可用。

示例

示例展示了如何使用useResource 执行 fetch 以请求天气,无论输入城市名称何时更改。

const Cmp = component$(() => {
  const cityS = useSignal("");
 
  const weatherResource = useResource$(async ({ track, cleanup }) => {
    const cityName = track(cityS);
    const abortController = new AbortController();
    cleanup(() => abortController.abort("cleanup"));
    const res = await fetch(`http://weatherdata.com?city=${cityName}`, {
      signal: abortController.signal,
    });
    const data = await res.json();
    return data as { temp: number };
  });
 
  return (
    <div>
      <input name="city" bind:value={cityS} />
      <Resource
        value={weatherResource}
        onResolved={(weather) => {
          return <div>Temperature: {weather.temp}</div>;
        }}
      />
    </div>
  );
});
Resource: <T>(props: ResourceProps<T>) => JSXOutput;

参数

类型

描述

props

ResourceProps<T>

JSXOutput

编辑此部分

ResourceCtx

export interface ResourceCtx<T>

属性

修饰符

类型

描述

previous

readonly

T | undefined

track

readonly

Tracker

方法

描述

cache(policyOrMilliseconds)

cleanup(callback)

编辑此部分

ResourceFn

export type ResourceFn<T> = (ctx: ResourceCtx<unknown>) => ValueOrPromise<T>;

参考: ResourceCtx, ValueOrPromise

编辑此部分

ResourceOptions

传递给useResource$() 的选项

export interface ResourceOptions

属性

修饰符

类型

描述

timeout?

number

(可选) 超时时间(以毫秒为单位)。 如果资源花费的时间超过指定的毫秒数,它将超时。 导致资源被拒绝。

编辑此部分

ResourcePending

export interface ResourcePending<T>

属性

修饰符

类型

描述

loading

readonly

boolean

value

readonly

Promise<T>

编辑此部分

ResourceProps

export interface ResourceProps<T>

属性

修饰符

类型

描述

onPending?

() => JSXOutput

(可选)

onRejected?

(reason: Error) => JSXOutput

(可选)

onResolved

(value: T) => JSXOutput

value

readonly

ResourceReturn<T> | Signal<Promise<T> | T> | Promise<T>

编辑此部分

ResourceRejected

export interface ResourceRejected<T>

属性

修饰符

类型

描述

loading

readonly

boolean

value

readonly

Promise<T>

编辑此部分

ResourceResolved

export interface ResourceResolved<T>

属性

修饰符

类型

描述

loading

readonly

boolean

value

readonly

Promise<T>

编辑此部分

ResourceReturn

export type ResourceReturn<T> =
  | ResourcePending<T>
  | ResourceResolved<T>
  | ResourceRejected<T>;

参考: ResourcePending, ResourceResolved, ResourceRejected

编辑此部分

ScriptHTMLAttributes

export interface ScriptHTMLAttributes<T extends Element> extends Attrs<'script', T>

扩展: Attrs<'script', T>

编辑此部分

SelectHTMLAttributes

export interface SelectHTMLAttributes<T extends Element> extends Attrs<'select', T>

扩展: Attrs<'select', T>

编辑此部分

setPlatform

设置CorePlatform

这对于在测试中覆盖平台以更改requestAnimationFrame 和导入解析的行为很有用。

setPlatform: (plt: CorePlatform) => CorePlatform;

参数

类型

描述

plt

CorePlatform

CorePlatform

编辑此部分

Signal

信号是一个可以读取和写入的响应式值。 当信号被写入时,所有跟踪信号的任务将被重新运行,所有读取信号的组件将被重新渲染。

此外,当信号值作为属性传递给组件时,优化器将自动转发信号。 这意味着return <div title={signal.value}>hi</div> 将在信号更改时更新title 属性,而无需重新渲染组件。

export interface Signal<T = any>

属性

修饰符

类型

描述

value

T

编辑此部分

Size

export type Size = number | string;

编辑此部分

SkipRender

SkipRender: JSXNode;

编辑此部分

Slot

允许投影当前组件的子元素。 只能在使用component$ 定义的组件的上下文中使用。

Slot: FunctionComponent<{
  name?: string;
}>;

编辑此部分

SlotHTMLAttributes

export interface SlotHTMLAttributes<T extends Element> extends Attrs<'slot', T>

扩展: Attrs<'slot', T>

编辑此部分

SnapshotListener

export interface SnapshotListener

属性

修饰符

类型

描述

el

Element

key

string

qrl

QRL<any>

编辑此部分

SnapshotMeta

export type SnapshotMeta = Record<string, SnapshotMetaValue>;

参考: SnapshotMetaValue

编辑此部分

SnapshotMetaValue

export interface SnapshotMetaValue

属性

修饰符

类型

描述

c?

string

(可选)

h?

string

(可选)

s?

string

(可选)

w?

string

(可选)

编辑此部分

SnapshotResult

export interface SnapshotResult

属性

修饰符

类型

描述

funcs

string[]

mode

'render' | 'listeners' | 'static'

objs

any[]

qrls

QRL[]

resources

ResourceReturnInternal<any>[]

state

SnapshotState

编辑此部分

SnapshotState

export interface SnapshotState

属性

修饰符

类型

描述

ctx

SnapshotMeta

objs

any[]

refs

Record<string, string>

subs

any[]

编辑此部分

SourceHTMLAttributes

export interface SourceHTMLAttributes<T extends Element> extends Attrs<'source', T>

扩展: Attrs<'source', T>

编辑此部分

SSRComment

SSRComment: FunctionComponent<{
  data: string;
}>;

编辑此部分

SSRHint

警告:此 API 现已过时。

  • 它没有效果
SSRHint: FunctionComponent<SSRHintProps>;

编辑此部分

SSRHintProps

export type SSRHintProps = {
  dynamic?: boolean;
};

编辑此部分

SSRRaw

SSRRaw: FunctionComponent<{
  data: string;
}>;

编辑此部分

SSRStream

SSRStream: FunctionComponent<SSRStreamProps>;

编辑此部分

SSRStreamBlock

SSRStreamBlock: FunctionComponent<{
  children?: any;
}>;

编辑此部分

SSRStreamProps

export type SSRStreamProps = {
  children:
    | AsyncGenerator<JSXChildren, void, any>
    | ((stream: StreamWriter) => Promise<void>)
    | (() => AsyncGenerator<JSXChildren, void, any>);
};

参考: JSXChildren, StreamWriter

编辑此部分

StreamWriter

export type StreamWriter = {
  write: (chunk: string) => void;
};

编辑此部分

StyleHTMLAttributes

export interface StyleHTMLAttributes<T extends Element> extends Attrs<'style', T>

扩展: Attrs<'style', T>

编辑此部分

SVGAttributes

TS 类型不包含 SVG 属性,因此我们必须自己定义它们

注意:这些属性可能不完整

export interface SVGAttributes<T extends Element = Element> extends AriaAttributes

扩展: AriaAttributes

属性

修饰符

类型

描述

"accent-height"?

number | string | undefined

(可选)

"alignment-baseline"?

'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit' | undefined

(可选)

"arabic-form"?

'initial' | 'medial' | 'terminal' | 'isolated' | undefined

(可选)

"baseline-shift"?

number | string | undefined

(可选)

"cap-height"?

number | string | undefined

(可选)

"clip-path"?

string | undefined

(可选)

"clip-rule"?

number | string | undefined

(可选)

"color-interpolation-filters"?

'auto' | 's-rGB' | 'linear-rGB' | 'inherit' | undefined

(可选)

"color-interpolation"?

number | string | undefined

(可选)

"color-profile"?

number | string | undefined

(可选)

"color-rendering"?

number | string | undefined

(可选)

"dominant-baseline"?

number | string | undefined

(可选)

"edge-mode"?

number | string | undefined

(可选)

"enable-background"?

number | string | undefined

(可选)

"fill-opacity"?

number | string | undefined

(可选)

"fill-rule"?

'nonzero' | 'evenodd' | 'inherit' | undefined

(可选)

"flood-color"?

number | string | undefined

(可选)

"flood-opacity"?

number | string | undefined

(可选)

"font-family"?

string | undefined

(可选)

"font-size-adjust"?

number | string | undefined

(可选)

"font-size"?

number | string | undefined

(可选)

"font-stretch"?

number | string | undefined

(可选)

"font-style"?

number | string | undefined

(可选)

"font-variant"?

number | string | undefined

(可选)

"font-weight"?

number | string | undefined

(可选)

"glyph-name"?

number | string | undefined

(可选)

"glyph-orientation-horizontal"?

number | string | undefined

(可选)

"glyph-orientation-vertical"?

number | string | undefined

(可选)

"horiz-adv-x"?

number | string | undefined

(可选)

"horiz-origin-x"?

number | string | undefined

(可选)

"image-rendering"?

number | string | undefined

(可选)

"letter-spacing"?

number | string | undefined

(可选)

"lighting-color"?

number | string | undefined

(可选)

"marker-end"?

string | undefined

(可选)

"marker-mid"?

string | undefined

(可选)

"marker-start"?

string | undefined

(可选)

"overline-position"?

number | string | undefined

(可选)

"overline-thickness"?

number | string | undefined

(可选)

"paint-order"?

number | string | undefined

(可选)

"pointer-events"?

number | string | undefined

(可选)

"rendering-intent"?

number | string | undefined

(可选)

"shape-rendering"?

number | string | undefined

(可选)

"stop-color"?

string | undefined

(可选)

"stop-opacity"?

number | string | undefined

(可选)

"strikethrough-position"?

number | string | undefined

(可选)

"strikethrough-thickness"?

number | string | undefined

(可选)

"stroke-dasharray"?

string | number | undefined

(可选)

"stroke-dashoffset"?

string | number | undefined

(可选)

"stroke-linecap"?

'butt' | 'round' | 'square' | 'inherit' | undefined

(可选)

"stroke-linejoin"?

'miter' | 'round' | 'bevel' | 'inherit' | undefined

(可选)

"stroke-miterlimit"?

string | undefined

(可选)

"stroke-opacity"?

number | string | undefined

(可选)

"stroke-width"?

number | string | undefined

(可选)

"text-anchor"?

string | undefined

(可选)

"text-decoration"?

number | string | undefined

(可选)

"text-rendering"?

number | string | undefined

(可选)

"underline-position"?

number | string | undefined

(可选)

"underline-thickness"?

number | string | undefined

(可选)

"unicode-bidi"?

number | string | undefined

(可选)

"unicode-range"?

number | string | undefined

(可选)

"units-per-em"?

number | string | undefined

(可选)

"v-alphabetic"?

number | string | undefined

(可选)

"v-hanging"?

number | string | undefined

(可选)

"v-ideographic"?

number | string | undefined

(可选)

"v-mathematical"?

number | string | undefined

(可选)

"vector-effect"?

number | string | undefined

(可选)

"vert-adv-y"?

number | string | undefined

(可选)

"vert-origin-x"?

number | string | undefined

(可选)

"vert-origin-y"?

number | string | undefined

(可选)

"word-spacing"?

number | string | undefined

(可选)

"writing-mode"?

number | string | undefined

(可选)

"x-channel-selector"?

string | undefined

(可选)

"x-height"?

number | string | undefined

(可选)

"xlink:actuate"?

string | undefined

(可选)

"xlink:arcrole"?

string | undefined

(可选)

"xlink:href"?

string | undefined

(可选)

"xlink:role"?

string | undefined

(可选)

"xlink:show"?

string | undefined

(可选)

"xlink:title"?

string | undefined

(可选)

"xlink:type"?

string | undefined

(可选)

"xml:base"?

string | undefined

(可选)

"xml:lang"?

string | undefined

(可选)

"xml:space"?

string | undefined

(可选)

"xmlns:xlink"?

string | undefined

(可选)

accumulate?

'none' | 'sum' | undefined

(可选)

additive?

'replace' | 'sum' | undefined

(可选)

allowReorder?

'no' | 'yes' | undefined

(可选)

alphabetic?

number | string | undefined

(可选)

amplitude?

number | string | undefined

(可选)

ascent?

number | string | undefined

(可选)

attributeName?

string | undefined

(可选)

attributeType?

string | undefined

(可选)

autoReverse?

Booleanish | undefined

(可选)

azimuth?

number | string | undefined

(可选)

baseFrequency?

number | string | undefined

(可选)

baseProfile?

number | string | undefined

(可选)

bbox?

number | string | undefined

(可选)

begin?

number | string | undefined

(可选)

bias?

number | string | undefined

(可选)

by?

number | string | undefined

(可选)

calcMode?

number | string | undefined

(可选)

clip?

number | string | undefined

(可选)

clipPathUnits?

number | string | undefined

(可选)

color?

string | undefined

(可选)

contentScriptType?

number | string | undefined

(可选)

contentStyleType?

number | string | undefined

(可选)

crossOrigin?

HTMLCrossOriginAttribute

(可选)

cursor?

number | string

(可选)

cx?

number | string | undefined

(可选)

cy?

number | string | undefined

(可选)

d?

string | undefined

(可选)

decelerate?

number | string | undefined

(可选)

descent?

number | string | undefined

(可选)

diffuseConstant?

number | string | undefined

(可选)

direction?

number | string | undefined

(可选)

display?

number | string | undefined

(可选)

divisor?

number | string | undefined

(可选)

dur?

number | string | undefined

(可选)

dx?

number | string | undefined

(可选)

dy?

number | string | undefined

(可选)

elevation?

number | string | undefined

(可选)

end?

number | string | undefined

(可选)

exponent?

number | string | undefined

(可选)

externalResourcesRequired?

number | string | undefined

(可选)

fill?

string | undefined

(可选)

filter?

string | undefined

(可选)

filterRes?

number | string | undefined

(可选)

filterUnits?

number | string | undefined

(可选)

focusable?

number | string | undefined

(可选)

format?

number | string | undefined

(可选)

fr?

number | string | undefined

(可选)

from?

number | string | undefined

(可选)

fx?

number | string | undefined

(可选)

fy?

number | string | undefined

(可选)

g1?

number | string | undefined

(可选)

g2?

number | string | undefined

(可选)

glyphRef?

number | string | undefined

(可选)

gradientTransform?

string | undefined

(可选)

gradientUnits?

string | undefined

(可选)

hanging?

number | string | undefined

(可选)

height?

Size | undefined

(可选)

href?

string | undefined

(可选)

id?

string | undefined

(可选)

ideographic?

number | string | undefined

(可选)

in?

string | undefined

(可选)

in2?

number | string | undefined

(可选)

intercept?

number | string | undefined

(可选)

k?

number | string | undefined

(可选)

k1?

number | string | undefined

(可选)

k2?

number | string | undefined

(可选)

k3?

number | string | undefined

(可选)

k4?

number | string | undefined

(可选)

kernelMatrix?

number | string | undefined

(可选)

kernelUnitLength?

number | string | undefined

(可选)

kerning?

number | string | undefined

(可选)

keyPoints?

number | string | undefined

(可选)

keySplines?

number | string | undefined

(可选)

keyTimes?

number | string | undefined

(可选)

lang?

string | undefined

(可选)

lengthAdjust?

number | string | undefined

(可选)

limitingConeAngle?

number | string | undefined

(可选)

local?

number | string | undefined

(可选)

markerHeight?

number | string | undefined

(可选)

markerUnits?

number | string | undefined

(可选)

markerWidth?

number | string | undefined

(可选)

mask?

string | undefined

(可选)

maskContentUnits?

number | string | undefined

(可选)

maskUnits?

number | string | undefined

(可选)

mathematical?

number | string | undefined

(可选)

max?

number | string | undefined

(可选)

media?

string | undefined

(可选)

method?

string | undefined

(可选)

min?

number | string | undefined

(可选)

mode?

number | string | undefined

(可选)

name?

string | undefined

(可选)

numOctaves?

number | string | undefined

(可选)

offset?

number | string | undefined

(可选)

opacity?

number | string | undefined

(可选)

operator?

number | string | undefined

(可选)

order?

number | string | undefined

(可选)

orient?

number | string | undefined

(可选)

orientation?

number | string | undefined

(可选)

origin?

number | string | undefined

(可选)

overflow?

number | string | undefined

(可选)

panose1?

number | string | undefined

(可选)

path?

string | undefined

(可选)

pathLength?

number | string | undefined

(可选)

patternContentUnits?

string | undefined

(可选)

patternTransform?

number | string | undefined

(可选)

patternUnits?

string | undefined

(可选)

points?

string | undefined

(可选)

pointsAtX?

number | string | undefined

(可选)

pointsAtY?

number | string | undefined

(可选)

pointsAtZ?

number | string | undefined

(可选)

preserveAlpha?

number | string | undefined

(可选)

preserveAspectRatio?

string | undefined

(可选)

primitiveUnits?

number | string | undefined

(可选)

r?

number | string | undefined

(可选)

radius?

number | string | undefined

(可选)

refX?

number | string | undefined

(可选)

refY?

number | string | undefined

(可选)

repeatCount?

number | string | undefined

(可选)

repeatDur?

number | string | undefined

(可选)

requiredextensions?

number | string | undefined

(可选)

requiredFeatures?

number | string | undefined

(可选)

restart?

number | string | undefined

(可选)

result?

string | undefined

(可选)

role?

string | undefined

(可选)

rotate?

number | string | undefined

(可选)

rx?

number | string | undefined

(可选)

ry?

number | string | undefined

(可选)

scale?

number | string | undefined

(可选)

seed?

number | string | undefined

(可选)

slope?

number | string | undefined

(可选)

spacing?

number | string | undefined

(可选)

specularConstant?

number | string | undefined

(可选)

specularExponent?

number | string | undefined

(可选)

speed?

number | string | undefined

(可选)

spreadMethod?

string | undefined

(可选)

startOffset?

number | string | undefined

(可选)

stdDeviation?

number | string | undefined

(可选)

stemh?

number | string | undefined

(可选)

stemv?

number | string | undefined

(可选)

stitchTiles?

number | string | undefined

(可选)

string?

number | string | undefined

(可选)

stroke?

string | undefined

(可选)

style?

CSSProperties | string | undefined

(可选)

surfaceScale?

number | string | undefined

(可选)

systemLanguage?

number | string | undefined

(可选)

tabindex?

number | undefined

(可选)

tableValues?

number | string | undefined

(可选)

target?

string | undefined

(可选)

targetX?

number | string | undefined

(可选)

targetY?

number | string | undefined

(可选)

textLength?

number | string | undefined

(可选)

to?

number | string | undefined

(可选)

转换?

string | undefined

(可选)

类型?

string | undefined

(可选)

u1?

number | string | undefined

(可选)

u2?

number | string | undefined

(可选)

Unicode?

number | string | undefined

(可选)

值?

string | undefined

(可选)

版本?

string | undefined

(可选)

viewBox?

string | undefined

(可选)

viewTarget?

number | string | undefined

(可选)

可见性?

number | string | undefined

(可选)

宽度?

Size | undefined

(可选)

宽度?

number | string | undefined

(可选)

x?

number | string | undefined

(可选)

x1?

number | string | undefined

(可选)

x2?

number | string | undefined

(可选)

xmlns?

string | undefined

(可选)

y?

number | string | undefined

(可选)

y1?

number | string | undefined

(可选)

y2?

number | string | undefined

(可选)

yChannelSelector?

string | undefined

(可选)

z?

number | string | undefined

(可选)

zoomAndPan?

string | undefined

(可选)

编辑此部分

SVGProps

export interface SVGProps<T extends Element> extends SVGAttributes, QwikAttributes<T>

扩展: SVGAttributes, QwikAttributes<T>

编辑此部分

sync$

此 API 作为开发者预览版提供,可能会根据我们收到的反馈进行更改。请勿在生产环境中使用此 API。

将函数提取到可同步加载的 QRL 中。

注意:同步 QRL 函数不能闭包任何变量,包括导出。

sync$: <T extends Function>(fn: T) => SyncQRL<T>;

参数

类型

描述

fn

T

用于提取的函数。

SyncQRL<T>

编辑此部分

SyncQRL

此 API 作为开发者预览版提供,可能会根据我们收到的反馈进行更改。请勿在生产环境中使用此 API。

export interface SyncQRL<TYPE extends Function = any> extends QRL<TYPE>

扩展: QRL<TYPE>

属性

修饰符

类型

描述

__brand__SyncQRL__

TYPE

(ALPHA)

开发

QRLDev | null

(ALPHA)

已解析

TYPE

(ALPHA)

编辑此部分

TableHTMLAttributes

export interface TableHTMLAttributes<T extends Element> extends Attrs<'table', T>

扩展: Attrs<'table', T>

编辑此部分

TaskCtx

export interface TaskCtx

属性

修饰符

类型

描述

track

Tracker

方法

描述

cleanup(callback)

编辑此部分

TaskFn

export type TaskFn = (ctx: TaskCtx) => ValueOrPromise<void | (() => void)>;

引用: TaskCtx, ValueOrPromise

编辑此部分

TdHTMLAttributes

export interface TdHTMLAttributes<T extends Element> extends Attrs<'td', T>

扩展: Attrs<'td', T>

编辑此部分

TextareaHTMLAttributes

export interface TextareaHTMLAttributes<T extends Element> extends Attrs<'textarea', T>

扩展: Attrs<'textarea', T>

编辑此部分

ThHTMLAttributes

export interface ThHTMLAttributes<T extends Element> extends Attrs<'tr', T>

扩展: Attrs<'tr', T>

编辑此部分

TimeHTMLAttributes

export interface TimeHTMLAttributes<T extends Element> extends Attrs<'time', T>

扩展: Attrs<'time', T>

编辑此部分

TitleHTMLAttributes

export interface TitleHTMLAttributes<T extends Element> extends Attrs<'title', T>

扩展: Attrs<'title', T>

编辑此部分

Tracker

用于向 Qwik 信号哪些状态应该被监视以进行更改。

Tracker 被传递到 useTasktaskFn 中。它旨在用于将状态对象包装在一个读代理中,该代理向 Qwik 信号哪些属性应该被监视以进行更改。任何属性的更改都会导致 taskFn 重新运行。

示例

传递到 taskFn 中的 obs 用于将 state.count 标记为感兴趣的属性。对 state.count 属性的任何更改都会导致 taskFn 重新运行。

const Cmp = component$(() => {
  const store = useStore({ count: 0, doubleCount: 0 });
  const signal = useSignal(0);
  useTask$(({ track }) => {
    // Any signals or stores accessed inside the task will be tracked
    const count = track(() => store.count);
    // You can also pass a signal to track() directly
    const signalCount = track(signal);
    store.doubleCount = count + signalCount;
  });
  return (
    <div>
      <span>
        {store.count} / {store.doubleCount}
      </span>
      <button
        onClick$={() => {
          store.count++;
          signal.value++;
        }}
      >
        +
      </button>
    </div>
  );
});
export interface Tracker

编辑此部分

TrackHTMLAttributes

export interface TrackHTMLAttributes<T extends Element> extends Attrs<'track', T>

扩展: Attrs<'track', T>

编辑此部分

untrack

不要跟踪此回调的监听器

untrack: <T>(fn: () => T) => T;

参数

类型

描述

fn

() => T

T

编辑此部分

useComputed$

返回一个只读信号的钩子,该信号在 ComputedFn 中使用的信号发生变化时更新。

useComputed$: <T>(qrl: ComputedFn<T>) => Signal<Awaited<T>>;

参数

类型

描述

qrl

ComputedFn<T>

Signal<Awaited<T>>

编辑此部分

useComputedQrl

useComputedQrl: <T>(qrl: QRL<ComputedFn<T>>) => Signal<Awaited<T>>;

参数

类型

描述

qrl

QRL<ComputedFn<T>>

Signal<Awaited<T>>

编辑此部分

useConstant

警告:此 API 现已过时。

这是一个技术预览

存储一个在组件生命周期内保留的值。

如果该值为一个函数,则会调用该函数来计算实际值。

useConstant: <T>(value: (() => T) | T) => T;

参数

类型

描述

value

(() => T) | T

T

编辑此部分

useContext

检索上下文值。

使用 useContext() 在组件中检索上下文的值。要检索值,父组件需要调用 useContextProvider() 来分配值。

示例

// Declare the Context type.
interface TodosStore {
  items: string[];
}
// Create a Context ID (no data is saved here.)
// You will use this ID to both create and retrieve the Context.
export const TodosContext = createContextId<TodosStore>("Todos");
 
// Example of providing context to child components.
export const App = component$(() => {
  useContextProvider(
    TodosContext,
    useStore<TodosStore>({
      items: ["Learn Qwik", "Build Qwik app", "Profit"],
    }),
  );
 
  return <Items />;
});
 
// Example of retrieving the context provided by a parent component.
export const Items = component$(() => {
  const todos = useContext(TodosContext);
  return (
    <ul>
      {todos.items.map((item) => (
        <li>{item}</li>
      ))}
    </ul>
  );
});
useContext: UseContext;

编辑此部分

useContextProvider

将值分配给上下文。

使用 useContextProvider() 将值分配给上下文。分配发生在组件的函数中。分配后,在任何子组件中使用 useContext() 来检索值。

上下文是一种将存储传递给子组件而不进行属性传递的方式。请注意,允许使用标量值,但对于反应性,您需要信号或存储。

示例

// Declare the Context type.
interface TodosStore {
  items: string[];
}
// Create a Context ID (no data is saved here.)
// You will use this ID to both create and retrieve the Context.
export const TodosContext = createContextId<TodosStore>("Todos");
 
// Example of providing context to child components.
export const App = component$(() => {
  useContextProvider(
    TodosContext,
    useStore<TodosStore>({
      items: ["Learn Qwik", "Build Qwik app", "Profit"],
    }),
  );
 
  return <Items />;
});
 
// Example of retrieving the context provided by a parent component.
export const Items = component$(() => {
  const todos = useContext(TodosContext);
  return (
    <ul>
      {todos.items.map((item) => (
        <li>{item}</li>
      ))}
    </ul>
  );
});
useContextProvider: <STATE>(context: ContextId<STATE>, newValue: STATE) => void

参数

类型

描述

上下文

ContextId<STATE>

要分配值的上下文。

newValue

STATE

void

编辑此部分

useErrorBoundary

useErrorBoundary: () => Readonly<ErrorBoundaryStore>;

返回值

Readonly<ErrorBoundaryStore>

编辑此部分

useId

useId: () => string;

返回值

string

编辑此部分

useOn

在当前组件的主机元素上注册一个监听器。

用于以编程方式添加事件监听器。在自定义 use* 方法中很有用,这些方法无法访问 JSX。否则,在 <div> 中添加 JSX 监听器是一个更好的主意。

useOn: <T extends KnownEventNames>(event: T | T[], eventQrl: EventQRL<T>) => void

参数

类型

描述

事件

T | T[]

eventQrl

EventQRL<T>

void

编辑此部分

useOnDocument

document 上注册一个监听器。

用于以编程方式添加事件监听器。在自定义 use* 方法中很有用,这些方法无法访问 JSX。

useOnDocument: <T extends KnownEventNames>(event: T | T[], eventQrl: EventQRL<T>) => void

参数

类型

描述

事件

T | T[]

eventQrl

EventQRL<T>

void

编辑此部分

useOnWindow

window 上注册一个监听器。

用于以编程方式添加事件监听器。在自定义 use* 方法中很有用,这些方法无法访问 JSX。

useOnWindow: <T extends KnownEventNames>(event: T | T[], eventQrl: EventQRL<T>) => void

参数

类型

描述

事件

T | T[]

eventQrl

EventQRL<T>

void

编辑此部分

useResource$

此方法类似于异步记忆函数,它会在某些跟踪值发生变化时运行并返回一些数据。

但是,useResource 会立即返回一个ResourceReturn 对象,该对象包含数据和一个状态,该状态指示数据是否可用。

状态可以是以下之一

  • 'pending' - 数据尚不可用。 - 'resolved' - 数据可用。 - 'rejected' - 数据由于错误或超时而不可用。

示例

示例展示了如何使用useResource 执行 fetch 以请求天气,无论输入城市名称何时更改。

const Cmp = component$(() => {
  const cityS = useSignal("");
 
  const weatherResource = useResource$(async ({ track, cleanup }) => {
    const cityName = track(cityS);
    const abortController = new AbortController();
    cleanup(() => abortController.abort("cleanup"));
    const res = await fetch(`http://weatherdata.com?city=${cityName}`, {
      signal: abortController.signal,
    });
    const data = await res.json();
    return data as { temp: number };
  });
 
  return (
    <div>
      <input name="city" bind:value={cityS} />
      <Resource
        value={weatherResource}
        onResolved={(weather) => {
          return <div>Temperature: {weather.temp}</div>;
        }}
      />
    </div>
  );
});
useResource$: <T>(generatorFn: ResourceFn<T>, opts?: ResourceOptions) =>
  ResourceReturn<T>;

参数

类型

描述

generatorFn

ResourceFn<T>

opts

ResourceOptions

(可选)

ResourceReturn<T>

编辑此部分

useResourceQrl

此方法类似于异步记忆函数,它会在某些跟踪值发生变化时运行并返回一些数据。

但是,useResource 会立即返回一个ResourceReturn 对象,该对象包含数据和一个状态,该状态指示数据是否可用。

状态可以是以下之一

  • pending - 数据尚未可用。 - resolved - 数据可用。 - rejected - 数据由于错误或超时而不可用。

避免在 useResource$ 中使用 try/catch 语句。如果您捕获错误而不是传递错误,则资源状态将永远不会是 rejected

示例

示例展示了如何使用useResource 执行 fetch 以请求天气,无论输入城市名称何时更改。

const Cmp = component$(() => {
  const cityS = useSignal("");
 
  const weatherResource = useResource$(async ({ track, cleanup }) => {
    const cityName = track(cityS);
    const abortController = new AbortController();
    cleanup(() => abortController.abort("cleanup"));
    const res = await fetch(`http://weatherdata.com?city=${cityName}`, {
      signal: abortController.signal,
    });
    const data = await res.json();
    return data as { temp: number };
  });
 
  return (
    <div>
      <input name="city" bind:value={cityS} />
      <Resource
        value={weatherResource}
        onResolved={(weather) => {
          return <div>Temperature: {weather.temp}</div>;
        }}
      />
    </div>
  );
});
useResourceQrl: <T>(qrl: QRL<ResourceFn<T>>, opts?: ResourceOptions) =>
  ResourceReturn<T>;

参数

类型

描述

qrl

QRL<ResourceFn<T>>

opts

ResourceOptions

(可选)

ResourceReturn<T>

编辑此部分

useServerData

export declare function useServerData<T>(key: string): T | undefined;

参数

类型

描述

key

string

T | undefined

编辑此部分

useSignal

创建一个在组件生命周期内保留的信号的钩子。

useSignal: UseSignal;

编辑此部分

UseSignal

创建一个在组件生命周期内保留的信号的钩子。

useSignal: UseSignal;

编辑此部分

useStore

创建一个 Qwik 可以跨序列化跟踪的对象。

使用 useStore 为您的应用程序创建状态。返回的对象是一个代理,它具有唯一的 ID。对象的 ID 用于 QRL 中引用存储。

示例

显示如何在 Counter 示例中使用 useStore 来跟踪计数的示例。

const Stores = component$(() => {
  const counter = useCounter(1);
 
  // Reactivity happens even for nested objects and arrays
  const userData = useStore({
    name: "Manu",
    address: {
      address: "",
      city: "",
    },
    orgs: [],
  });
 
  // useStore() can also accept a function to calculate the initial value
  const state = useStore(() => {
    return {
      value: expensiveInitialValue(),
    };
  });
 
  return (
    <div>
      <div>Counter: {counter.value}</div>
      <Child userData={userData} state={state} />
    </div>
  );
});
 
function useCounter(step: number) {
  // Multiple stores can be created in custom hooks for convenience and composability
  const counterStore = useStore({
    value: 0,
  });
  useVisibleTask$(() => {
    // Only runs in the client
    const timer = setInterval(() => {
      counterStore.value += step;
    }, 500);
    return () => {
      clearInterval(timer);
    };
  });
  return counterStore;
}
useStore: <STATE extends object>(
  initialState: STATE | (() => STATE),
  opts?: UseStoreOptions,
) => STATE;

参数

类型

描述

initialState

STATE | (() => STATE)

opts

UseStoreOptions

(可选)

STATE

编辑此部分

UseStoreOptions

export interface UseStoreOptions

属性

修饰符

类型

描述

deep?

boolean

(可选) 如果为 true,则所有嵌套对象和数组也将被跟踪。默认值为 true

reactive?

boolean

(可选) 如果为 false,则不会跟踪对象的变化。默认值为 true

编辑此部分

useStyles$

对组件样式的延迟加载引用。

组件样式允许 Qwik 仅在需要时延迟加载组件的样式信息。(并避免在 SSR 混合的情况下重复加载它。)

import styles from "./code-block.css?inline";
 
export const CmpStyles = component$(() => {
  useStyles$(styles);
 
  return <div>Some text</div>;
});
useStyles$: (qrl: string) => void

参数

类型

描述

qrl

string

void

编辑此部分

useStylesQrl

对组件样式的延迟加载引用。

组件样式允许 Qwik 仅在需要时延迟加载组件的样式信息。(并避免在 SSR 混合的情况下重复加载它。)

import styles from "./code-block.css?inline";
 
export const CmpStyles = component$(() => {
  useStyles$(styles);
 
  return <div>Some text</div>;
});
useStylesQrl: (styles: QRL<string>) => void

参数

类型

描述

样式

QRL<string>

void

编辑此部分

UseStylesScoped

export interface UseStylesScoped

属性

修饰符

类型

描述

scopeId

string

编辑此部分

useStylesScoped$

对组件样式的延迟加载引用,该引用作用域到组件。

组件样式允许 Qwik 仅在需要时延迟加载组件的样式信息。(并避免在 SSR 混合的情况下重复加载它。)

import scoped from "./code-block.css?inline";
 
export const CmpScopedStyles = component$(() => {
  useStylesScoped$(scoped);
 
  return <div>Some text</div>;
});
useStylesScoped$: (qrl: string) => UseStylesScoped;

参数

类型

描述

qrl

string

UseStylesScoped

编辑此部分

useStylesScopedQrl

对组件样式的延迟加载引用,该引用作用域到组件。

组件样式允许 Qwik 仅在需要时延迟加载组件的样式信息。(并避免在 SSR 混合的情况下重复加载它。)

import scoped from "./code-block.css?inline";
 
export const CmpScopedStyles = component$(() => {
  useStylesScoped$(scoped);
 
  return <div>Some text</div>;
});
useStylesScopedQrl: (styles: QRL<string>) => UseStylesScoped;

参数

类型

描述

样式

QRL<string>

UseStylesScoped

编辑此部分

useTask$

当观察到的输入发生变化时,重新运行 taskFn

使用 useTask 来观察一组输入的变化,然后在这些输入发生变化时重新执行 taskFn

只有当观察到的输入发生变化时,taskFn 才会执行。要观察输入,请使用 obs 函数来包装属性读取。这将创建订阅,这些订阅将触发 taskFn 重新运行。

useTask$: (qrl: TaskFn, opts?: UseTaskOptions | undefined) => void

参数

类型

描述

qrl

TaskFn

opts

UseTaskOptions | undefined

(可选)

void

编辑此部分

UseTaskOptions

export interface UseTaskOptions

属性

修饰符

类型

描述

eagerness?

EagernessOptions

(可选) - visible: 当元素可见时运行效果。 - load: 当应用程序恢复时急切地运行效果。

编辑此部分

useTaskQrl

当观察到的输入发生变化时,重新运行 taskFn

使用 useTask 来观察一组输入的变化,然后在这些输入发生变化时重新执行 taskFn

只有当观察到的输入发生变化时,taskFn 才会执行。要观察输入,请使用 obs 函数来包装属性读取。这将创建订阅,这些订阅将触发 taskFn 重新运行。

useTaskQrl: (qrl: QRL<TaskFn>, opts?: UseTaskOptions) => void

参数

类型

描述

qrl

QRL<TaskFn>

opts

UseTaskOptions

(可选)

void

编辑此部分

useVisibleTask$

const Timer = component$(() => {
  const store = useStore({
    count: 0,
  });
 
  useVisibleTask$(() => {
    // Only runs in the client
    const timer = setInterval(() => {
      store.count++;
    }, 500);
    return () => {
      clearInterval(timer);
    };
  });
 
  return <div>{store.count}</div>;
});
useVisibleTask$: (qrl: TaskFn, opts?: OnVisibleTaskOptions | undefined) => void

参数

类型

描述

qrl

TaskFn

opts

OnVisibleTaskOptions | undefined

(可选)

void

编辑此部分

useVisibleTaskQrl

const Timer = component$(() => {
  const store = useStore({
    count: 0,
  });
 
  useVisibleTask$(() => {
    // Only runs in the client
    const timer = setInterval(() => {
      store.count++;
    }, 500);
    return () => {
      clearInterval(timer);
    };
  });
 
  return <div>{store.count}</div>;
});
useVisibleTaskQrl: (qrl: QRL<TaskFn>, opts?: OnVisibleTaskOptions) => void

参数

类型

描述

qrl

QRL<TaskFn>

opts

OnVisibleTaskOptions

(可选)

void

编辑此部分

ValueOrPromise

表示一个值的类型,该值要么是解析的,要么是一个承诺。

export type ValueOrPromise<T> = T | Promise<T>;

编辑此部分

版本

QWIK_VERSION

version: string;

编辑此部分

VideoHTMLAttributes

export interface VideoHTMLAttributes<T extends Element> extends Attrs<'video', T>

扩展: Attrs<'video', T>

编辑此部分

VisibleTaskStrategy

export type VisibleTaskStrategy =
  | "intersection-observer"
  | "document-ready"
  | "document-idle";

编辑此部分

WebViewHTMLAttributes

警告:此 API 现已过时。

这是 React Native WebView 的类型。它不属于 Qwik(至少现在还没有),但我们为了向后兼容性而保留它。

export interface WebViewHTMLAttributes<T extends Element> extends HTMLAttributes<T>

扩展: HTMLAttributes<T>

属性

修饰符

类型

描述

allowFullScreen?

boolean | undefined

(可选)

allowpopups?

boolean | undefined

(可选)

autoFocus?

boolean | undefined

(可选)

autosize?

boolean | undefined

(可选)

blinkfeatures?

string | undefined

(可选)

disableblinkfeatures?

string | undefined

(可选)

disableguestresize?

boolean | undefined

(可选)

disablewebsecurity?

boolean | undefined

(可选)

guestinstance?

string | undefined

(可选)

httpreferrer?

string | undefined

(可选)

nodeintegration?

boolean | undefined

(可选)

partition?

string | undefined

(可选)

plugins?

boolean | undefined

(可选)

preload?

string | undefined

(可选)

src?

string | undefined

(可选)

useragent?

string | undefined

(可选)

webpreferences?

string | undefined

(可选)

编辑此部分