Я читал документ, и после настройки его примера кода мне удалось заставить меня завалить компилятором циклические зависимости, подобные этой:
<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>
Это работает, но у меня есть пара вопросов:
- Борьба с компилятором мне не подходит, есть ли другие способы исправить это?
- Более общий вопрос заключается в том, что циклические зависимости случаются довольно часто с людьми, которые написали большое количество кода svelte? Это нормально или обычно сигнализирует о плохом дизайне?
Спасибо.