【发布时间】:2021-08-09 12:16:03
【问题描述】:
我最近尝试编写一个自定义指令,该指令执行一些逻辑并将事件分派回使用它的元素。
//svelte file
<div use:customDiective on:success={handleSuccess}>...</div>
// Custom directive
export const customDirective = node => {
//some synchronous logic here
node.dispatchEvent(new CustomEvent('success', node))
}
我发现,由于我的指令中的逻辑是同步的,它会在节点准备好捕获它之前调度新的自定义事件。我可以通过使用setTimeout() 轻松解决它,但这似乎不是一个合适的解决方案。有什么方法可以让我使用生命周期方法或指令中的其他内容来确保组件已为分派事件做好准备?
【问题讨论】:
-
您可以使用 Promise 来准备节点的状态并调用其 .then() 方法来调度您的自定义事件。
标签: javascript svelte svelte-3