svelte/action
Action
操作是在创建元素时调用的函数。您可以使用此接口对这些操作进行类型化。以下示例定义了一个仅适用于 <div> 元素的操作,并可以选择接受一个参数,该参数具有默认值
export const const myAction: Action<HTMLDivElement, {
someProperty: boolean;
} | undefined>
myAction: type Action = /*unresolved*/ anyAction<HTMLDivElement, { someProperty: booleansomeProperty: boolean } | undefined> = (node: anynode, param: {
someProperty: boolean;
}
param = { someProperty: booleansomeProperty: true }) => {
// ...
}Action<HTMLDivElement> 和 Action<HTMLDivElement, undefined> 都表示操作不接受任何参数。
您可以从函数中返回一个包含 update 和 destroy 方法的对象,并对其具有哪些其他属性和事件进行类型化。有关更多详细信息,请参阅接口 ActionReturn。
interface Action<
Element = HTMLElement,
Parameter = undefined,
Attributes extends Record<string, any> = Record<
never,
any
>
> {…}<Node extends Element>(
...args: undefined extends Parameter
? [node: Node, parameter?: Parameter]
: [node: Node, parameter: Parameter]
): void | ActionReturn<Parameter, Attributes>;ActionReturn
操作可以返回一个包含此接口中定义的两个属性的对象。两者都是可选的。
- update:操作可以有一个参数。每当该参数更改时,此方法都会被调用,紧随 Svelte 将更新应用于标记之后。
ActionReturn和ActionReturn<undefined>都表示操作不接受任何参数。 - destroy:在元素卸载后调用的方法
此外,您可以指定操作在应用的元素上启用的其他属性和事件。这仅适用于 TypeScript 类型,对运行时没有影响。
使用示例
interface Attributes {
Attributes.newprop?: string | undefinednewprop?: string;
'on:event': (e: CustomEvent<boolean>e: interface CustomEvent<T = any>CustomEvent<boolean>) => void;
}
export function function myAction(node: HTMLElement, parameter: Parameter): ActionReturn<Parameter, Attributes>myAction(node: HTMLElementnode: HTMLElement, parameter: Parameterparameter: type Parameter = /*unresolved*/ anyParameter): type ActionReturn = /*unresolved*/ anyActionReturn<type Parameter = /*unresolved*/ anyParameter, Attributes> {
// ...
return {
update: (updatedParameter: any) => voidupdate: (updatedParameter: anyupdatedParameter) => {...},
destroy: () => {...}
};
}interface ActionReturn<
Parameter = undefined,
Attributes extends Record<string, any> = Record<
never,
any
>
> {…}update?: (parameter: Parameter) => void;destroy?: () => void;上一页 下一页