```js // @noErrors import { createAttachmentKey, fromAction } from 'svelte/attachments'; ``` ## 创建附件密钥 > 自 5.29 起可用 创建一个对象键,当对象被扩展到元素上时,该键将被识别为附件,作为使用`{@attach ...}`的编程替代方案。这对于库的作者可能很有用,但在构建应用程序时通常不需要。 ```svelte ``` ```dts function createAttachmentKey(): symbol; ``` ## 从动作 将 [操作](/docs/svelte/use) 转换为 [附件](/docs/svelte/@attach),保持相同的行为。如果您想在组件上开始使用附件,但已经有由库提供的操作,这很有用。 请注意,第二个参数(如果提供)必须是一个函数,该函数返回要传递给操作函数的参数,而不是参数本身。 ```svelte
...
bar)}>...
``` ```dts function fromAction< E extends EventTarget, T extends unknown >( action: | Action | ((element: E, arg: T) => void | ActionReturn), fn: () => T ): Attachment; ``` ```dts function fromAction( action: | Action | ((element: E) => void | ActionReturn) ): Attachment; ``` ## 附件 一个[附件](/docs/svelte/@attach)是一个在元素挂载到 DOM 时运行的函数,并且可选地返回一个在元素稍后移除时被调用的函数。 它可以附加到具有 `#{@attach ...}` 标签的元素上,或者通过扩展一个包含使用 [`createAttachmentKey`](/docs/svelte/svelte-attachments#createAttachmentKey) 创建的属性的对象。 ```dts interface Attachment {/*…*/} ``` ```dts (element: T): void | (() => void); ```