## 动作 动作是在创建元素时调用的函数。您可以使用此接口输入此类动作。以下示例定义了一个仅适用于`
`元素的动作,并且它可选地接受一个具有默认值的参数: ```ts export const myAction: Action = (node, param = { someProperty: true }) => { // ... } ``` `操作`和 `Action` 都表示该操作不接受任何参数。 您可以从函数中返回一个具有方法 `update` 和 `destroy` 的对象,并指定它具有哪些附加属性和事件。有关详细信息,请参阅接口 `ActionReturn`。 ```dts interface Action< Element = HTMLElement, Parameter = undefined, Attributes extends Record = Record< never, any > > {/*…*/} ``` ```dts ( ...args: undefined extends Parameter ? [node: Node, parameter?: Parameter] : [node: Node, parameter: Parameter] ): void | ActionReturn; ``` ## 动作返回 操作可以返回一个包含此接口中定义的两个属性的对象。这两个属性都是可选的。 * 更新:一个操作可以有一个参数。每当该参数发生变化时,此方法将被调用,在 Svelte 应用更新到标记之后立即。\``ActionReturn`\`和\``ActionReturn`\`都表示该操作不接受任何参数。 * destroy:元素卸载后调用的方法 此外,您还可以指定动作在应用元素上启用的哪些附加属性和事件。这仅适用于 TypeScript 类型定义,在运行时没有影响。 示例用法: ```ts interface Attributes { newprop?: string; 'on:event': (e: CustomEvent) => void; } export function myAction(node: HTMLElement, parameter: Parameter): ActionReturn { // ... return { update: (updatedParameter) => {...}, destroy: () => {...} }; } ``` ```dts interface ActionReturn< Parameter = undefined, Attributes extends Record = Record< never, any > > {/*…*/} ``` ```dts update?: (parameter: Parameter) => void; ``` `destroy?: () => void;`