[javascript] Svelte에서 리스트를 동적으로 렌더링하는 방법은 어떻게 되나요?
이를 위해서는 Svelte의 반복문인 {#each}
를 사용하면 됩니다. 아래는 리스트를 동적으로 렌더링하는 예시입니다.
<script>
let items = ['사과', '바나나', '딸기'];
function addItem() {
items = [...items, '오렌지'];
}
function removeItem(index) {
items = items.filter((_, i) => i !== index);
}
</script>
<button on:click={addItem}>아이템 추가</button>
<ul>
{#each items as item, index}
<li>
{item}
<button on:click={() => removeItem(index)}>삭제</button>
</li>
{/each}
</ul>
위의 코드에서는 items
라는 배열에 초기 아이템들이 담겨있습니다. addItem()
함수는 새로운 아이템인 ‘오렌지’를 items
배열에 추가합니다. removeItem(index)
함수는 해당 인덱스의 아이템을 배열에서 제거합니다.
화면에는 ul
태그 안에 {#each}
로 감싸진 블록을 사용하고, items
의 각 아이템을 순회하면서 리스트를 출력합니다. 각 아이템 옆에는 삭제 버튼도 추가되어 있습니다.
이제 위의 코드를 실행하면, 버튼을 클릭하여 아이템을 추가하거나 삭제할 수 있습니다.
Svelte의 강력한 반응성과 컴포넌트 기반 아키텍처는 동적인 리스트를 만드는 데 매우 효과적입니다. Svelte는 변경된 데이터만 업데이트하고 효율적으로 렌더링하는 방식이기 때문에, 성능도 우수합니다.