개발/Svelte 튜토리얼
[Svelte 튜토리얼] Part 1 - Declarations
아우르르
2022. 9. 23. 23:36
이번 튜토리얼에서는 반응형 변수에 의존해 함께 업데이트가 되도록하는 반응형 선언(reactive declaration)에 대해서 알려줍니다.
Svelte는 $: 변수가 포함된 구문
의 형태로 반응형 선언을 지원합니다.
이 형태는 순수 Javascript label 문법으로, 새로운 변수를 선언하는 구문을 쓸 때 let을 사용하지 않는 것에 주의해야합니다.
튜토리얼에 주어진 코드는 다음과 같습니다.
<script>
let count = 0;
function handleClick() {
count += 1;
}
</script>
<button on:click={handleClick}>
Clicked {count}
{count === 1 ? 'time' : 'times'}
</button>
이번 튜토리얼의 목표는 다음과 같이 반응형으로 동작하는 문자열이 나타나도록 구현하는 것입니다.
이를 구현하기 위해서 다음과 같이 코드를 작성할 수도 있습니다.
<script>
let count = 0;
let doubled = 0;
function handleClick() {
count += 1;
doubled += 2;
}
</script>
<button on:click={handleClick}>
Clicked {count}
{count === 1 ? 'time' : 'times'}
</button>
<p>{count} doubled is {doubled}</p>
하지만, doubled 값은 count 값에 항상 의존적이기 때문에 count의 초기값이 바뀌면 doubled의 초기값도 변경해주어야 합니다.
즉, 다른 목적으로 코드를 변경할 때 유연하게 대처하지 못합니다. 따라서 반응형 선언을 사용해 구현해야 합니다.
반응형 선언을 사용해 구현한 튜토리얼의 답은 다음과 같습니다.
<script>
let count = 0;
$: doubled = count * 2;
function handleClick() {
count += 1;
}
</script>
<button on:click={handleClick}>
Clicked {count}
{count === 1 ? 'time' : 'times'}
</button>
<p>{count} doubled is {doubled}</p>