如果我添加document.addEventListener
并单击onMount
,则会发现一个奇怪的行为。
isShow = true
,并显示嵌套组件。onMount
条运行document.addEventListener('click')
我想这是因为斯维尔特(Svelte)一口气做到了。我尝试了await tick()
,但没有帮助。
我看到解决方案之一是将document.addEventListener
换成setTimeout
。可以,但是我认为这是一个错误的决定。
那么,这是正常行为还是错误?
这里是一个示例: https://svelte.dev/repl/c89c272ca6c245dabf8451ba950d10c0?version=3.6.8
答案 0 :(得分:3)
这是预期的行为。最简单的解决方案可能是将{ capture: true }
(或仅将true
)添加为addEventListener
和removeEventListener
:https://svelte.dev/repl/daee8509d6634a68b2cf35e53f660e34?version=3.6.8的第三个参数。之所以可行,是因为该事件在附加嵌套事件侦听器时已离开捕获阶段,并且现在处于冒泡阶段。