이번 포스트에서는 배열(list)의 element, object의 property 등 반복적인 데이터를 렌더링할 때 사용되는 v-for directive에 대해서 살펴보자.
v-for
v-for
v-for는 반복문을 사용하기 위한 directive 이다. list의 element나 object의 property를 이용해서 li 태그를 구성할 경우 아래와 같이 작성할 수 있다. 부모 요소가 아닌 반복될 요소에 v-for를 적용한다.
<!-- 배열 순회의 경우-->
<ul>
<li v-for="(value, index) in data">{{index}}, {{value}}</li>
</ul>
<!-- 객체 순회의 경우 -->
<ul>
<li v-for="(value, key, index) in data">{{index}}, {{key}}, {{value}}</li>
</ul>
여기서 data는 model에서 expose 되는 데이터로 list(iterable) 또는 object일 수 있다. data가 list인 경우는 value와 함께 index 만 전달된다.data가 객체일 경우는 value, key, index를 갖는다. 여기서 index는 0부터 1씩 증가하는 값이다. value등을 묶는 () 는 생략될 수 있다.
만약 특정 범위를 반복하는 구문을 만들고 싶다면 아래와 같이 사용한다. 아래 코드는 1부터 10까지 범위의 숫자를 출력하게 된다.
반복문을 작성하다보면 특정 조건에 만족하지 않는 경우는 출력을 제한하고 싶은 경우가 자주 발생한다. 그래서 v-for와 함께 v-if를 섞어서 사용하려는 시도를 많이 한다. 중요한 점은 이렇게 v-for와 v-if를 하나의 element에서 사용할 경우v-if의 우선 순위가 더 높다는 점이다. (vue 2.x까지는 이 관계가 모호해서 혼돈스러웠다.)
예를 들어 다음의 코드는 1 ~ 9까지의 수 중에서 i가 짝수일 경우만 그 제곱을 출력하려는 의도로 작성되었다.