防止双击 Svelte 中的 onclick
Preventing double click on onclick in Svelte
我使用 onclick
来触发我的函数,但我想防止在进行双击操作时调用该函数。
如何在 Svelte 上实现它? Svelte 是否有任何特殊的方式来注册一次单击而不注册两次?
非常感谢任何帮助。
Svelte 中没有内置任何东西来执行此操作。
但这可以通过将要执行的函数包装在节流函数中来轻松完成,这基本上会限制在特定时间范围内可以进行的点击次数。
可以在网上找到很多节流函数的片段,或者您可以使用为您完成的无数 npm 包之一。
您可以通过例如在调用点击处理程序时将布尔值设置为 true
,并在一段时间后使用超时将其重置回 false
。如果此布尔值在新点击时为 true
,则忽略它。
示例 (REPL)
<script>
let hasBeenClicked = false;
function handleClick() {
if (hasBeenClicked) return;
hasBeenClicked = true;
setTimeout(() => {
hasBeenClicked = false;
}, 200);
console.log('click');
}
</script>
<button on:click={handleClick}>Click me</button>
我使用 onclick
来触发我的函数,但我想防止在进行双击操作时调用该函数。
如何在 Svelte 上实现它? Svelte 是否有任何特殊的方式来注册一次单击而不注册两次?
非常感谢任何帮助。
Svelte 中没有内置任何东西来执行此操作。
但这可以通过将要执行的函数包装在节流函数中来轻松完成,这基本上会限制在特定时间范围内可以进行的点击次数。
可以在网上找到很多节流函数的片段,或者您可以使用为您完成的无数 npm 包之一。
您可以通过例如在调用点击处理程序时将布尔值设置为 true
,并在一段时间后使用超时将其重置回 false
。如果此布尔值在新点击时为 true
,则忽略它。
示例 (REPL)
<script>
let hasBeenClicked = false;
function handleClick() {
if (hasBeenClicked) return;
hasBeenClicked = true;
setTimeout(() => {
hasBeenClicked = false;
}, 200);
console.log('click');
}
</script>
<button on:click={handleClick}>Click me</button>