Недавно я попытался написать специальную директиву, которая выполняла некоторую логику и отправляла событие обратно тому элементу, в котором оно использовалось.
//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()
, но это не похоже на правильное решение. Могу ли я использовать метод жизненного цикла или что-то в директиве, чтобы убедиться, что компонент готов к отправляемому событию?