Как избежать циклических зависимостей без борьбы с компилятором в svelte? - PullRequest
0 голосов
/ 11 июля 2019

Я читал документ, и после настройки его примера кода мне удалось заставить меня завалить компилятором циклические зависимости, подобные этой:

<script>
    let count = 0;
    $: double = count * 2;

    $: if (double >= 20) {
        alert(`count is dangerously high!`);
        count = 9;
    }

    function handleClick() {
        count += 1;
    }
</script>

<button on:click={handleClick}>
    Clicked {count} {count === 1 ? 'time' : 'times'}
</button>

Я спросил на разногласиях, как это исправить, и люди предложили мне скрыть зависимости от компилятора следующим образом:

<script>
    let count = 0;
    $: double = count * 2;

    function resetCount() {
        count = 9;
    }

    $: if (double >= 20) {
        alert(`count is dangerously high!`);
        resetCount();
    }

    function handleClick() {
        count += 1;
    }
</script>

<button on:click={handleClick}>
    Clicked {count} {count === 1 ? 'time' : 'times'}
</button>

Это работает, но у меня есть пара вопросов:

  1. Борьба с компилятором мне не подходит, есть ли другие способы исправить это?
  2. Более общий вопрос заключается в том, что циклические зависимости случаются довольно часто с людьми, которые написали большое количество кода svelte? Это нормально или обычно сигнализирует о плохом дизайне?

Спасибо.

...