我在传递道具时遇到了一个非常奇怪的错误。这是父组件:
<script>
export let close;
let showDownload = false;
let validOS;
let userID;
let downloads;
async function setData(args) {
// do logic
downloads = args;
showDownload = true;
}
</script>
<Modal {close}>
{#if showDownload}
<Download {userID} {downloads} {close} />
{:else}
<Register {validOS} {setData} {close} />
{/if}
</Modal>
基本上问题是我的关闭功能在下载组件中丢失了。流程是首先渲染注册组件,执行一些逻辑,完成后,下载组件使用从注册组件传递的值进行渲染。在完成一些逻辑之后,调用 close 。但它是未定义的。问题似乎是下载组件中的这个 onMount 函数:
<script>
export let close
</script
onMount(() => {
let element = document.createElement("a");
element.setAttribute("href", "some url", "download");
element.style.display = "none";
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
_paq.push(["trackLink", href, "download"]);
});
我能够将问题缩小到 _paq 函数(它来自 Matomo,窗口对象上的全局函数)。当我删除此功能时,一切正常。那么有人知道这里出了什么问题吗?