끄적이는 공간

퍼블리셔 Note/Vue.js

[Vue.js] 반복문 v-for

Joroki 2023. 8. 7. 12:06

Vue.js 반복문(v-for)란?

간단하게 얘기하자면 퍼블리셔가 상품목록을 구현한다고 했을때 'div','li' 이런 태그들을 수십개,수백개 똑같은 마크업 형태로 반복 작성하게되는데 이것을 수십개,수백개 마크업하지않고 축약해 줄 수 있는 기능을 제공하는게[ Vue.js의 반복문 'v-for'이다.

 

단순히 같은형태의 마크업만 반복해줄 뿐 아니라 배열(Array),객체(Object)형태로 이루어진 데이터들의 각 항목을 반복하면서 데이터 리스트를 기반으로 HTML을 생성해 줄 수 있다.

 

보통은 데이터리스트 기반으로 HTML을 생성하기위해 사용한다.

 

v-for 기본 문법 

기본 문법은 아래와 같다.

 

<template>
    <ul class="item">
    	<li v-for="작명 in 반복횟수" :key="작명">사과</li>
    </ul>
</template>

1. 원하는 태그 안에 v-for="작명 in 반복횟수" 기입

2. v-for가 기입된 태그 안에 :key="v-for작명" 기입

 

 

Array,Object 데이터를 기입한 v-for

Vue.js의 반복문은 위에 설명한대로 배열(Array),객체(Object)형태의 데이터 리스트 기반으로 HTML을 자동 생성해준다.

그것을 활용한 문법은 아래와 같다.

<template>
    <ul class="item">
    	<li v-for="작명 in items" :key="item">{{ 작명 }}</li>
    </ul>
</template>

<script>
export default {
	name: 'App',
	data() {
		return {
			 items: ['사과','바나나','포도','딸기','초콜렛'],
		}
	}
}
</script>

기본 문법은 동일하다. 위 코드 기준으로 'items'라는 데이터를 조회하고 그 횟수만큼 반복하여 li태그를 생성해준다.

이후, v-for에서 '작명' 한 것을 데이터 바인딩하여 출력해보면 items의 데이터 값들이 출력된다.

 

1번 반복되면 '사과',

2번 반복되면 '바나나'

3번 반복되면 '포도'

 

위처럼 출력 되는 것을 확인 할 수 있다.

 

v-for="(작명,정수) in data" 작성법

v-for를 사용할때 소괄호'()' 를 열면 작명을 두개까지 허용한다.

소괄호 안에서 좌측에 작성한 작명은 다른 것과 마찬가지로 배열,객체의 데이터가 되고 우측에 작성한 작명은 1씩 증가하는 정수가 된다. 즉, 반복되는 횟수를 알려준다.

 

작성법은 아래와 같다.

<template>
    <ul class="item">
    	<!-- v-for 기본 데이터 출력 -->
    	<li v-for="(작명,정수) in items" :key="정수">{{ 작명 }}</li>
        <!-- ...v-for 기본 데이터 출력 문법 -->

		<!-- v-for 괄호 두개일때 정수를 활용한 데이터 출력 -->
        <li v-for="(작명,정수) in items" :key="정">{{ items[정수] }}</li>
        <!-- ...v-for 괄호 두개일때 정수를 활용한 데이터 출력 -->
    </ul>
</template>

<script>
export default {
	name: 'App',
	data() {
		return {
			 items: ['사과','바나나','포도','딸기','초콜렛'],
		}
	}
}
</script>

다른 v-for문과 다른점은 v-for에 소괄호를 써서 변수명을 두개 작성하게되면 :key값안에 작명한 데이터 명이 아닌 관습적으로 '정수'를 기입해야한다. 

 

v-for은 정확하게 언제 사용?

1. 같은 형태의 수십,수백개의 마크업을 복붙하기 힘들때 사용.

2. HTML을 데이터 갯수만큼 자동으로 생성하는 게 필요 할 때 사용.

반응형

'퍼블리셔 Note > Vue.js' 카테고리의 다른 글

[Vue.js] 컴포넌트(Component)  (0) 2023.09.06
[Vue.js] 이벤트 핸들러  (0) 2023.09.06
[Vue.js] 조건문 v-if  (0) 2023.08.07
[Vue.js] 단방향 데이터 바인딩  (0) 2023.07.28
[Vue.js] Vue Cli3 시작하기.  (0) 2023.02.09