svelte/action
Action
操作是在创建元素时调用的函数。您可以使用此接口对这些操作进行类型化。以下示例定义了一个仅适用于 <div>
元素的操作,并可以选择接受一个参数,该参数具有默认值
export const const myAction: Action<HTMLDivElement, {
someProperty: boolean;
} | undefined>
myAction: type Action = /*unresolved*/ any
Action<HTMLDivElement, { someProperty: boolean
someProperty: boolean } | undefined> = (node: any
node, param: {
someProperty: boolean;
}
param = { someProperty: boolean
someProperty: 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 | undefined
newprop?: 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: HTMLElement
node: HTMLElement, parameter: Parameter
parameter: type Parameter = /*unresolved*/ any
Parameter): type ActionReturn = /*unresolved*/ any
ActionReturn<type Parameter = /*unresolved*/ any
Parameter, Attributes> {
// ...
return {
update: (updatedParameter: any) => void
update: (updatedParameter: any
updatedParameter) => {...},
destroy: () => {...}
};
}
interface ActionReturn<
Parameter = undefined,
Attributes extends Record<string, any> = Record<
never,
any
>
> {…}
update?: (parameter: Parameter) => void;
destroy?: () => void;
上一页 下一页