简而言之,当变量更改时如何`console.log('yes')`?

时间:2019-07-11 07:37:18

标签: javascript svelte

let c = 0;
$: console.log(c);

如果我们想在更改c时打印其值,我们可以像上面这样写。

由于c字面使用了$,因此该语句可以对c起反应。

但是如果console.log('yes')更改后我只想c怎么办?

let c = 0;
$: console.log('yes');

很显然,语句console.log('yes')c无反应。

此外,如果我仍然console.log(c)但将其放入函数中:

let c = 0;
function log() {
  console.log(c);
}
$: log();

log()c也没有反应。

那么,如果反应式代码不包含我想反应的变量,该怎么办?

5 个答案:

答案 0 :(得分:1)

我最近一直在玩svelte,需要在属性更改时调用一个函数。
在Vue中,您可以使用watch来做到这一点,但是我在Svelte中找不到对等的人。
 在我的项目中,是这样完成的:

let c = 0;
$: if (c) {
    console.log("yes");
}

我不确定100%是否是正确的方法。
我希望知道,里奇·哈里斯(Rich Harris)会在这里鸣叫。

答案 1 :(得分:1)

我在Twitter上问,答案是:

enter image description here

答案 2 :(得分:1)

执行此操作的最佳方法是使用一个检测值变化的函​​数来查看此示例Variable watcher with svelte

答案 3 :(得分:0)

您可以这样做:

let c = 0;
$: if (c >= 0) {
    console.log("yes");
}

答案 4 :(得分:0)

如果你只是在任何你想做的事情中使用不断变化的变量,它也可以工作:

let c
$: if (condition) console.log(c)