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"
'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
属性
修饰符
类型
描述
string | undefined
(可选) 当 DOM 焦点位于复合小部件、文本框、组或应用程序上时,标识当前活动元素。
Booleanish | undefined
(可选) 指示辅助技术将根据 aria-relevant 属性定义的更改通知,呈现更改区域的全部内容,还是仅呈现部分内容。
'none' | 'inline' | 'list' | 'both' | undefined
(可选) 指示输入文本是否可以触发显示一个或多个对用户为输入意图值的预测,并指定如果进行预测,则如何呈现预测。
Booleanish | undefined
(可选) 指示元素正在修改,辅助技术可能希望在修改完成之前等待,然后再将它们暴露给用户。
boolean | 'false' | 'mixed' | 'true' | undefined
(可选) 指示复选框、单选按钮和其他小部件的当前“选中”状态。
number | undefined
(可选) 定义表格、网格或树形网格中的总列数。
number | undefined
(可选) 定义元素的列索引或相对于表格、网格或树形网格中总列数的位置。
number | undefined
(可选) 定义表格、网格或树形网格中单元格或网格单元格所跨越的列数。
string | undefined
(可选) 标识其内容或存在由当前元素控制的元素(或元素)。
boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | undefined
(可选) 指示代表容器或一组相关元素中当前项目的元素。
string | undefined
(可选) 标识描述对象的元素(或元素)。
string | undefined
(可选) 标识为对象提供详细扩展描述的元素。
Booleanish | undefined
(可选) 指示元素是可感知的但已禁用,因此不可编辑或不可操作。
'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined
(可选) 指示在拖动对象在放置目标上释放时可以执行哪些功能。
string | undefined
(可选) 标识为对象提供错误消息的元素。
Booleanish | undefined
(可选) 指示元素或其控制的另一个分组元素当前是展开还是折叠。
string | undefined
(可选) 标识内容的备用阅读顺序中的下一个元素(或元素),该顺序可让辅助技术根据用户的选择覆盖阅读文档源顺序的常规默认值。
Booleanish | undefined
(可选) 指示元素在拖放操作中的“已抓取”状态。
boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined
(可选) 指示可由元素触发的交互式弹出元素(如菜单或对话框)的可用性和类型。
Booleanish | undefined
(可选) 指示元素是否暴露给辅助功能 API。
boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined
(可选) 指示输入的值不符合应用程序预期的格式。
string | undefined
(可选) 指示作者已实现的键盘快捷键,用于激活或将焦点设置到元素。
string | undefined
(可选) 定义一个字符串值,该值标记当前元素。
string | undefined
(可选) 标识标记当前元素的元素(或元素)。
number | undefined
(可选) 定义结构中元素的层次结构级别。
'off' | 'assertive' | 'polite' | undefined
(可选) 指示元素将更新,并描述用户代理、辅助技术和用户可以从活动区域预期的更新类型。
Booleanish | undefined
(可选) 指示元素在显示时是否为模态。
Booleanish | undefined
(可选) 指示文本框是否接受多行输入或仅接受单行输入。
Booleanish | undefined
(可选) 指示用户可以从当前可选择的后代中选择多个项目。
'horizontal' | 'vertical' | undefined
(可选) 指示元素的方向是水平、垂直还是未知/模棱两可。
string | undefined
(可选) 标识元素(或元素),以定义 DOM 元素之间的视觉、功能或上下文父/子关系,其中 DOM 层次结构不能用于表示关系。
string | undefined
(可选) 定义一个简短的提示(一个词或短语),旨在帮助用户在控件没有值时进行数据输入。提示可以是示例值或对预期格式的简要描述。
number | undefined
(可选) 定义元素在当前 listitems 或 treeitems 集中的编号或位置。如果集合中的所有元素都存在于 DOM 中,则不需要此属性。
boolean | 'false' | 'mixed' | 'true' | undefined
(可选) 指示切换按钮的当前“按下”状态。
Booleanish | undefined
(可选) 指示元素不可编辑,但可以操作。
'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals' | undefined
(可选) 指示当活动区域内的可访问性树被修改时,用户代理将触发哪些通知。
Booleanish | undefined
(可选) 指示在提交表单之前,需要在元素上输入用户输入。
string | undefined
(可选) 为元素的角色定义一个可读的、作者本地化的描述。
number | undefined
(可选) 定义表格、网格或树形网格中的总行数。
number | undefined
(可选) 定义元素的行索引或相对于表格、网格或树形网格中总行数的位置。
number | undefined
(可选) 定义表格、网格或树形网格中单元格或网格单元格所跨越的行数。
Booleanish | undefined
(可选) 指示各种小部件的当前“选中”状态。
number | undefined
(可选) 定义当前列表项或树项集中项目的数量。如果集合中的所有元素都存在于 DOM 中,则不需要。
'none' | 'ascending' | 'descending' | 'other' | undefined
(可选) 指示表格或网格中的项目是按升序还是降序排序。
number | undefined
(可选) 定义范围小部件允许的最大值。
number | undefined
(可选) 定义范围小部件允许的最小值。
number | undefined
(可选) 定义范围小部件的当前值。
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} />;
});
另请参阅:component
、useCleanup
、onResume
、onPause
、useOn
、useOnDocument
、useOnWindow
、useStyles
component$: <PROPS = unknown>(onMount: OnRenderFn<PROPS>) => Component<PROPS>;
参数
类型
描述
onMount
OnRenderFn<PROPS>
Component<PROPS>
ComponentBaseProps
export interface ComponentBaseProps
属性
修饰符
类型
描述
string
(可选)
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} />;
});
另请参阅:component
、useCleanup
、onResume
、onPause
、useOn
、useOnDocument
、useOnWindow
、useStyles
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()
创建一个 ContextId
。ContextId
只是一个可序列化的上下文标识符。它本身不是上下文值。有关值,请参阅 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>
属性
修饰符
类型
描述
readonly
STATE
用于存储上下文类型信息的 design-time 属性。
readonly
string
上下文的唯一 ID。
CorePlatform
平台抽象的低级 API。
不同的平台(浏览器、节点、服务工作者)可能具有不同的处理方式,例如 requestAnimationFrame
和导入。为了使 Qwik 平台独立,Qwik 使用 CorePlatform
API 访问平台 API。
CorePlatform
还负责导入符号。客户端(浏览器)上的导入映射与服务器上的导入映射不同。因此,服务器有一个清单,用于将符号映射到 javascript 块。清单封装在 CorePlatform
中,因此,CorePlatform
不能是全局的,因为可能有多个应用程序同时在服务器上运行。
这是一个低级 API,您不应该需要访问它。
export interface CorePlatform
属性
修饰符
类型
描述
(symbolName: string, chunk: string | null, parent?: string) => readonly [symbol: string, chunk: string] | undefined
检索符号的块名称。
当应用程序在服务器上运行时,符号可能从不同的文件导入(因为服务器构建通常是一个 javascript 块)。因此,有必要将块从服务器格式转换为客户端(浏览器)格式。这是通过在清单中查找符号(它们是全局唯一的)来完成的。(清单是符号到客户端块名称的映射。)
(containerEl: Element | undefined, url: string | URL | undefined | null, symbol: string) => ValueOrPromise<any>
从 QRL 检索符号值。
Qwik 需要延迟加载数据和闭包。为此,Qwik 使用 QRL,它们是所需资源的可序列化引用。QRL 包含使用 importSymbol
检索引用所需的所有信息。
为什么不使用 import()
?因为 import()
相对于当前文件,而当前文件始终是 Qwik 框架。因此,QRL 具有允许它们序列化相对于应用程序基础而不是 Qwik 框架文件的导入的附加信息。
boolean
在服务器平台上运行时为真。
(fn: () => any) => Promise<any>
在下一个滴答声执行操作。
(fn: () => any) => Promise<any>
在下一个请求动画帧执行操作。
CorrectedToggleEvent
这修正了 ToggleEvent 的 TS 定义
export interface CorrectedToggleEvent extends Event
扩展: Event
属性
修饰符
类型
描述
readonly
'open' | 'closed'
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()
创建一个 ContextId
。ContextId
只是一个可序列化的上下文标识符。它本身不是上下文值。有关值,请参阅 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
属性
修饰符
类型
描述
number
string
number
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>
属性
修饰符
类型
描述
ClassList | Signal<ClassList> | undefined
(可选)
EagernessOptions
export type EagernessOptions = "visible" | "load" | "idle";
Element
type Element = JSXOutput;
参考: JSXOutput
ElementChildrenAttribute
interface ElementChildrenAttribute
属性
修饰符
类型
描述
ElementType
type ElementType = string | FunctionComponent<Record<any, any>>;
EmbedHTMLAttributes
export interface EmbedHTMLAttributes<T extends Element> extends Attrs<'embed', T>
扩展: Attrs<'embed', T>
ErrorBoundaryStore
export interface ErrorBoundaryStore
属性
修饰符
类型
描述
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 的函数。
key
、flags
和 dev
参数用于内部使用。
export type FunctionComponent<P = unknown> = {
renderFn(
props: P,
key: string | null,
flags: number,
dev?: DevJSX,
): JSXOutput;
}["renderFn"];
getPlatform
检索 CorePlatform
。
CorePlatform
还负责检索 Manifest,其中包含符号到 JavaScript 导入块的映射。因此,CorePlatform
不能是全局的,而是特定于当前运行的应用程序。在服务器上,可能有多个不同的应用程序在单个服务器实例中运行,因此 CorePlatform
与应用程序文档相关联。
getPlatform: () => CorePlatform;
返回值
h
export declare namespace h
函数
描述
h
export declare namespace h
函数
描述
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>
扩展: HTMLElementAttrs、DOMAttributes<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;
参考: JSXChildren、Signal、JSXNode
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>
属性
修饰符
类型
描述
JSXChildren | null
(可选)
number
Record<any, unknown> | null
string | null
T extends FunctionComponent<infer P> ? P : Record<any, unknown>
T
JSXOutput
组件的任何有效输出
export type JSXOutput =
| JSXNode
| string
| number
| boolean
| null
| undefined
| JSXOutput[];
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; }>
属性
修饰符
类型
描述
(可选)
MenuHTMLAttributes
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
属性
修饰符
类型
描述
(可选) 用于确定“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
- 服务工作者的基本 URLimport.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>;
qrl
QRL
类型表示一个可延迟加载且可序列化的资源。
QRL 代表 Qwik URL。
当您想要引用一个延迟加载的资源时,请使用 QRL
。QRL
最常用于代码(函数),但也可以用于其他资源,例如在样式的情况下使用 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()
?
乍一看,QRL
与 import()
的作用相同。但是,需要考虑三个细微的差异。
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>
- 注意,没有简单的方法可以将块(
./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。
当您想要引用一个延迟加载的资源时,请使用 QRL
。QRL
最常用于代码(函数),但也可以用于其他资源,例如在样式的情况下使用 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()
?
乍一看,QRL
与 import()
的作用相同。但是,需要考虑三个细微的差异。
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>
- 注意,没有简单的方法可以将块(
./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;
QwikAttributes
Qwik DOM 属性,不包含普通处理程序,用于作为函数参数
export interface QwikAttributes<EL extends Element> extends DOMAttributesBase<EL>, QwikEvents<EL, false>
扩展: DOMAttributesBase<EL>, QwikEvents<EL, false>
属性
修饰符
类型
描述
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;
QwikCompositionEvent
警告:此 API 现已过时。
使用
CompositionEvent
并使用处理程序函数的第二个参数作为当前事件目标。
export type QwikCompositionEvent<T = Element> = 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
接口
描述
类型别名
描述
QwikKeyboardEvent
警告:此 API 现已过时。
使用
KeyboardEvent
并使用处理程序函数的第二个参数作为当前事件目标。
export type QwikKeyboardEvent<T = Element> = NativeKeyboardEvent;
QwikMouseEvent
警告:此 API 现已过时。
使用
MouseEvent
并使用处理程序函数的第二个参数作为当前事件目标。
export type QwikMouseEvent<T = Element, E = NativeMouseEvent> = E;
参考: NativeMouseEvent
QwikPointerEvent
警告:此 API 现已过时。
使用
PointerEvent
并使用处理程序函数的第二个参数作为当前事件目标。
export type QwikPointerEvent<T = Element> = 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;
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
(可选)
Promise<RenderResult>
包含清理函数的对象。
RenderOnce
RenderOnce: FunctionComponent<{
children?: unknown;
key?: string | number | null | undefined;
}>;
RenderOptions
export interface RenderOptions
属性
修饰符
类型
描述
Record<string, any>
(可选)
RenderResult
export interface RenderResult
方法
描述
RenderSSROptions
export interface RenderSSROptions
属性
修饰符
类型
描述
string
(可选)
(contexts: QContext[], containerState: ContainerState, containsDynamic: boolean, textNodes: Map<string, string>) => Promise<JSXNode>
(可选)
JSXNode<string>[]
(可选)
Record<string, string>
string
string
Record<string, any>
(可选)
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
ResourceCtx
export interface ResourceCtx<T>
属性
修饰符
类型
描述
readonly
T | undefined
readonly
方法
描述
ResourceFn
export type ResourceFn<T> = (ctx: ResourceCtx<unknown>) => ValueOrPromise<T>;
参考: ResourceCtx, ValueOrPromise
ResourceOptions
传递给useResource$()
的选项
export interface ResourceOptions
属性
修饰符
类型
描述
number
(可选) 超时时间(以毫秒为单位)。 如果资源花费的时间超过指定的毫秒数,它将超时。 导致资源被拒绝。
ResourcePending
export interface ResourcePending<T>
属性
修饰符
类型
描述
readonly
boolean
readonly
Promise<T>
ResourceProps
export interface ResourceProps<T>
属性
修饰符
类型
描述
() => JSXOutput
(可选)
(reason: Error) => JSXOutput
(可选)
(value: T) => JSXOutput
readonly
ResourceReturn<T> | Signal<Promise<T> | T> | Promise<T>
ResourceRejected
export interface ResourceRejected<T>
属性
修饰符
类型
描述
readonly
boolean
readonly
Promise<T>
ResourceResolved
export interface ResourceResolved<T>
属性
修饰符
类型
描述
readonly
boolean
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
Signal
信号是一个可以读取和写入的响应式值。 当信号被写入时,所有跟踪信号的任务将被重新运行,所有读取信号的组件将被重新渲染。
此外,当信号值作为属性传递给组件时,优化器将自动转发信号。 这意味着return <div title={signal.value}>hi</div>
将在信号更改时更新title
属性,而无需重新渲染组件。
export interface Signal<T = any>
属性
修饰符
类型
描述
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
属性
修饰符
类型
描述
Element
string
QRL<any>
SnapshotMeta
export type SnapshotMeta = Record<string, SnapshotMetaValue>;
SnapshotMetaValue
export interface SnapshotMetaValue
属性
修饰符
类型
描述
string
(可选)
string
(可选)
string
(可选)
string
(可选)
SnapshotResult
export interface SnapshotResult
属性
修饰符
类型
描述
string[]
'render' | 'listeners' | 'static'
any[]
QRL[]
ResourceReturnInternal<any>[]
SnapshotState
export interface SnapshotState
属性
修饰符
类型
描述
any[]
Record<string, string>
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
属性
修饰符
类型
描述
number | string | undefined
(可选)
'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit' | undefined
(可选)
'initial' | 'medial' | 'terminal' | 'isolated' | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
"color-interpolation-filters"?
'auto' | 's-rGB' | 'linear-rGB' | 'inherit' | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
'nonzero' | 'evenodd' | 'inherit' | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
"glyph-orientation-horizontal"?
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | number | undefined
(可选)
string | number | undefined
(可选)
'butt' | 'round' | 'square' | 'inherit' | undefined
(可选)
'miter' | 'round' | 'bevel' | 'inherit' | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
'none' | 'sum' | undefined
(可选)
'replace' | 'sum' | undefined
(可选)
'no' | 'yes' | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
Booleanish | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
(可选)
number | string
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
Size | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
CSSProperties | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
Size | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
number | string | undefined
(可选)
string | undefined
(可选)
number | string | undefined
(可选)
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>
属性
修饰符
类型
描述
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
属性
修饰符
类型
描述
方法
描述
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
被传递到 useTask
的 taskFn
中。它旨在用于将状态对象包装在一个读代理中,该代理向 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
(可选)
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
(可选)
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
(可选)
STATE
UseStoreOptions
export interface UseStoreOptions
属性
修饰符
类型
描述
boolean
(可选) 如果为 true
,则所有嵌套对象和数组也将被跟踪。默认值为 true
。
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
属性
修饰符
类型
描述
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
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>
useTask$
当观察到的输入发生变化时,重新运行 taskFn
。
使用 useTask
来观察一组输入的变化,然后在这些输入发生变化时重新执行 taskFn
。
只有当观察到的输入发生变化时,taskFn
才会执行。要观察输入,请使用 obs
函数来包装属性读取。这将创建订阅,这些订阅将触发 taskFn
重新运行。
useTask$: (qrl: TaskFn, opts?: UseTaskOptions | undefined) => void
参数
类型
描述
qrl
opts
UseTaskOptions | undefined
(可选)
void
UseTaskOptions
export interface UseTaskOptions
属性
修饰符
类型
描述
(可选) - visible
: 当元素可见时运行效果。 - load
: 当应用程序恢复时急切地运行效果。
useTaskQrl
当观察到的输入发生变化时,重新运行 taskFn
。
使用 useTask
来观察一组输入的变化,然后在这些输入发生变化时重新执行 taskFn
。
只有当观察到的输入发生变化时,taskFn
才会执行。要观察输入,请使用 obs
函数来包装属性读取。这将创建订阅,这些订阅将触发 taskFn
重新运行。
useTaskQrl: (qrl: QRL<TaskFn>, opts?: UseTaskOptions) => void
参数
类型
描述
qrl
opts
(可选)
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
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
opts
(可选)
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>
属性
修饰符
类型
描述
boolean | undefined
(可选)
boolean | undefined
(可选)
boolean | undefined
(可选)
boolean | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
boolean | undefined
(可选)
boolean | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
boolean | undefined
(可选)
string | undefined
(可选)
boolean | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)
string | undefined
(可选)