在 svelte 中,如何在变量更改时“console.log('yes')”?
In svelte, how to `console.log('yes')` when a variable changed?
let c = 0;
$: console.log(c);
如果我们想在c
改变的时候打印它的值,可以像上面这样写
因为c
字面意思是用在$
指令中,所以这个语句可以对c
.
起反应
但是如果我只想在 c
更改时 console.log('yes')
怎么办?
let c = 0;
$: console.log('yes');
显然,语句 console.log('yes')
对 c
没有反应。
此外,如果我仍然console.log(c)
但将其放入函数中:
let c = 0;
function log() {
console.log(c);
}
$: log();
log()
对 c
也没有反应。
那么,如果响应式代码不包含我想要响应的变量,我该怎么办?
你可以这样做:
let c = 0;
$: if (c >= 0) {
console.log("yes");
}
我最近一直在玩 svelte,需要在 属性 更改时调用一个函数。
在 Vue 中,您可以使用 watch
来完成,但我在 Svelte 中找不到等效项。
在我的项目中是这样做的:
let c = 0;
$: if (c) {
console.log("yes");
}
虽然我不是 100% 确定这是否正确。
希望 Rich Harris 能在这里插话,我想知道。
我在推特上问过,答案是:
Link 至主题:https://twitter.com/liyuanqiu/status/1149235193296773122
最好的方法是使用一个函数来检测值何时发生变化看看这个例子Variable watcher with svelte
如果你只是在你想做的任何事情中使用变化的变量,它也有效:
let c
$: if (condition) console.log(c)
let c = 0;
$: console.log(c);
如果我们想在c
改变的时候打印它的值,可以像上面这样写
因为c
字面意思是用在$
指令中,所以这个语句可以对c
.
但是如果我只想在 c
更改时 console.log('yes')
怎么办?
let c = 0;
$: console.log('yes');
显然,语句 console.log('yes')
对 c
没有反应。
此外,如果我仍然console.log(c)
但将其放入函数中:
let c = 0;
function log() {
console.log(c);
}
$: log();
log()
对 c
也没有反应。
那么,如果响应式代码不包含我想要响应的变量,我该怎么办?
你可以这样做:
let c = 0;
$: if (c >= 0) {
console.log("yes");
}
我最近一直在玩 svelte,需要在 属性 更改时调用一个函数。
在 Vue 中,您可以使用 watch
来完成,但我在 Svelte 中找不到等效项。
在我的项目中是这样做的:
let c = 0;
$: if (c) {
console.log("yes");
}
虽然我不是 100% 确定这是否正确。
希望 Rich Harris 能在这里插话,我想知道。
我在推特上问过,答案是:
Link 至主题:https://twitter.com/liyuanqiu/status/1149235193296773122
最好的方法是使用一个函数来检测值何时发生变化看看这个例子Variable watcher with svelte
如果你只是在你想做的任何事情中使用变化的变量,它也有效:
let c
$: if (condition) console.log(c)