В svelte, как `console.log ('yes')`, когда переменная изменилась? - PullRequest
2 голосов
/ 11 июля 2019
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.

Итак, что я могу сделать, если реактивный код не содержит буквально переменную, к которой я хочу реагировать?

Ответы [ 3 ]

1 голос
/ 11 июля 2019

Я недавно играл с svelte, и мне нужно было вызывать функцию при изменении свойства.
В Vue вы бы сделали это с watch, но я не смог найти эквивалент в Svelte.
В моем проекте сделали это так:

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

Я не уверен на 100%, правильно ли это или нет.
Надеюсь, Рич Харрис будет здесь, как я хотел бы знать.

1 голос
/ 11 июля 2019

Я спросил в Твиттере, ответ:

enter image description here

0 голосов
/ 11 июля 2019

Вы можете сделать это так:

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