如果我添加document.addEventListener
点击,我发现了一个奇怪的行为onMount
。
isShow = true
,嵌套组件显示。onMount
运行的地方document.addEventListener('click')
我猜这是因为 Svelte 一次性完成的。我尝试过await tick()
,但没有帮助。
我看到解决方案之一是包装document.addEventListener
到setTimeout
. 它有效,但我认为这是一个错误的决定。
那么,这是正常行为还是错误?
这是一个示例: https://svelte.dev/repl/c89c272ca6c245dabf8451ba950d10c0 ?version=3.6.8
这是预期的行为。最简单的解决方案可能是将{ capture: true }
(或只是true
)添加为addEventListener
and的第三个参数removeEventListener
:https://svelte.dev/repl/daee8509d6634a68b2cf35e53f660e34?version=3.6.8。这是有效的,因为在附加嵌套事件侦听器时事件已离开捕获阶段,并且现在处于冒泡阶段。
归档时间: |
|
查看次数: |
2501 次 |
最近记录: |