Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对用作事件处理程序的变量的赋值不是被动的:_Javascript_Dom Events_Svelte - Fatal编程技术网

Javascript 对用作事件处理程序的变量的赋值不是被动的:

Javascript 对用作事件处理程序的变量的赋值不是被动的:,javascript,dom-events,svelte,Javascript,Dom Events,Svelte,在下面的代码中(onMount为简洁起见被省略),h1元素中同时使用了count和handler道具。处理程序变量在3秒后更新;但它不会改变元素的行为 如果处理程序的定义需要动态更改,那么最好的方法是什么 <script> let count = 0; let handler = () => {}; function update() { if (count >= 3) {handler = () => {count = 0;}} count++;

在下面的代码中(
onMount
为简洁起见被省略),h1元素中同时使用了
count
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>

让计数=0;
让handler=()=>{};
函数更新(){
如果(计数>=3){handler=()=>{count=0;}}
计数++;
}
设置间隔(更新,1000);
{count}

哇,这是一个很好的例子,我希望你的代码能正常工作!看起来Svelte没有更新
打开:当出现反应式更新时,单击
绑定,这很奇怪

作为一种解决方法,您可以给
on:click
一个匿名函数调用动态更改的函数,如下所示:

handler()}>{count}

这似乎奏效了。这里有一个

是,如果我有另一个调用处理程序的函数(在我的实际测试中,该调用函数必须首先检查处理程序是否未定义)。这使它起作用,但有一点。。。不满意。看来你找到了一个错误思维?