본문 바로가기
Programming/Vue

[Vue] 반복문 v-for 사용하는 방법

by 혀코 2022. 8. 28.

 

안녕하세요. 혀코입니다.

이번 시간에는 Vue에서 반복문 v-for 를 사용하는 방법에 대해서 알아보겠습니다.

 

Vue 에서 리스트 형태의 데이터를 반복문을 통해 출력하려면 v-for을 사용합니다.

<template>
  <div>
    <h1>Company</h1>
    <ul>
      <li v-for="company in companies" :key="company">{{ company }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      companies: ['Naver', 'Kakao', 'Coupang', 'Carrot', 'Toss']
    }
  }
}
</script>

 

data에 companies라는 리스트 형태의 데이터가 있고, 이것을 html의 ul li에 v-for 반복문을 사용하여 리스트 형태로 출력하면 다음과 같은 결과를 볼 수 있습니다.

 

 

다음으로 배열의 index 값도 함께 출력할 수 있도록 소스코드를 변경해 보겠습니다.

<template>
  <div>
    <h1>Company</h1>
    <ul>
      <li v-for="(company, index) in companies" :key="company">{{ company }} - {{index}}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      companies: ['Naver', 'Kakao', 'Coupang', 'Carrot', 'Toss']
    }
  }
}
</script>

 

company in companies 를 company, index in companies로 변경해서 index 값을 추출해서 출력할 때 사용했습니다.

 

 

이번에는 배열을 computed property를 사용해서 객체로 이루어진 새로운 배열을 만들어 출력해 보겠습니다.

<template>
  <div>
    <h1>Company</h1>
    <ul>
      <li v-for="company in newCompanies" :key="company.id">{{ company.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      companies: ['Naver', 'Kakao', 'Coupang', 'Carrot', 'Toss']
    }
  },
  computed: {
    newCompanies() {
      return this.companies.map((company, index) => {
        return {
          id: index,
          name: company
        }
      })
    }
  }
}
</script>

 

주어진 companies 배열을 활용해서 id key와 name value로 이뤄진 객체 데이터를 만들어 newCompanies라는 새로운 배열을 만들었습니다. 

이 새로운 배열을 반복문을 돌려 key 값으로 company.id 값을 지정하고, name으로 company.name을 지정했습니다.

 

여기서 특정 아이디 값을 생성할 경우, shortid라는 npm package를 사용합니다.

<template>
  <div>
    <h1>Company</h1>
    <ul>
      <li v-for="{id, name} in newCompanies" :key="id">{{ name }} - {{ id }}</li>
    </ul>
  </div>
</template>

<script>
import shortid from 'shortid'
export default {
  data() {
    return {
      companies: ['Naver', 'Kakao', 'Coupang', 'Carrot', 'Toss']
    }
  },
  computed: {
    newCompanies() {
      return this.companies.map(company => ({
          id: shortid.generate(),
          name: company
        })
      )
    }
  }
}
</script>

 

 

이렇게 Vue에서 반복문 v-for를 사용하는 방법에 대해서 알아봤습니다.

해당 정보가 도움이 되셨다면, 공감과 구독 부탁 드립니다.

감사합니다. :)

댓글