javascript - 分配给用作事件处理程序的变量不是 react 性的 :

标签 javascript dom-events svelte

在下面的代码中(onMount 为简洁起见省略),counthandler 属性都用在了 h1 元素中。 handler 变量在 3 秒后更新;但它不会改变元素的行为。

在处理程序的定义需要动态更改的情况下,最好的方法是什么?

<script>
let count = 0;
let handler = () => {};

function update() {
    if (count >= 3) {handler = () => {count = 0;}}
    count++;
}
setInterval(update, 1000);
</script>

<h1 on:click={handler}>{count}</h1>

https://svelte.dev/repl/cb0469ba5d8241e382677ad95a659b76?version=3.12.1

最佳答案

哇,太棒了,我希望你的代码能工作!看起来 Svelte 在有反应性更新时没有更新 on:click 绑定(bind),这很奇怪!

作为变通方法,您可以为 on:click 提供一个调用动态更改函数的匿名函数,如下所示:

<h1 on:click={() => handler()}>{count}</h1>

这似乎可以解决问题。这是一个 updated REPL

关于javascript - 分配给用作事件处理程序的变量不是 react 性的 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226319/

相关文章:

svelte - 在 Svelte 套件中访问没有加载功能的参数

javascript - 在 react 中设置按钮动画

javascript - 从下拉菜单中选择特定项目时,会出现更改的文本框/下拉菜单

javascript - 在 iframe 中捕获所有 keyup/keydown 事件?

javascript - 为什么 Firefox 在页面加载时触发 mouseenter 事件?

svelte - 无法获取 Svelte 文件中的 Svelte 存储数据

svelte - 如何直接使用 :change? 中选择元素的选定值

javascript - 最好的网站光标(鼠标)跟踪应用程序是什么?

javascript - 使 d3 序列 sunburst 示例适应新数据并出现 js 错误

javascript - MEAN.JS 无法连接 MongoDB