[Vue] List Rendering

์˜ค๋ฆฌํ†ตํ†ตยท2024๋…„ 11์›” 6์ผ

Vue

๋ชฉ๋ก ๋ณด๊ธฐ
5/11

๐Ÿ“š ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด์ž.

1. v-for

์†Œ์Šค ๋ฐ์ดํ„ฐ(Array, Object, Number, String, Iterable)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์†Œ ๋˜๋Š” ํ…œํ”Œ๋ฆฟ ๋ธ”๋ก์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ Œ๋”๋ง

v-for ๊ตฌ์กฐ

  • v-for๋Š” alias in expression ํ˜•์‹์˜ ํŠน์ˆ˜ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค.!

  • ์ธ๋ฑ์Šค(๊ฐ์ฒด์—์„œ๋Š” key)์— ๋Œ€ํ•œ ๋ณ„์นญ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

v-for ์˜ˆ์‹œ

<div v-for="people in peoples">
  {{ people.name }} 
  {{ people.age }}
</div>
const peoples = ref([
  { name: 'Tony', age: 20 },
  { name: 'Peter', age: 28 },
])

์ด๋ ‡๊ฒŒ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2. v-for with key

๋ฐ˜๋“œ์‹œ v-for์™€ key๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ ์ด์œ ๋Š” key๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Vue๊ฐ€ ๊ฐ ํ•ญ๋ชฉ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์–ด, ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

let id = 0
const peoples = ref([
  { id: id++, name: 'Tony', age: 20 },
  { id: id++, name: 'Peter', age: 28 },
])
<div v-for="people in peoples" :key="people.id">
  {{ people.name }} 
  {{ people.age }}
</div>

๐Ÿ– ๊ฒฐ๋ก ์ ์œผ๋กœ, v-for์™€ key๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ Vue ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ, ์•ˆ์ •์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ค‘์š”ํ•œ ๊ด€ํ–‰์ด๋‹ค!!

3. v-for with v-if

๋™์ผ ์š”์†Œ์— v-for์™€ v-if๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋™์ผํ•œ ์š”์†Œ์—์„œ v-if๊ฐ€ v-for๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. v-if์—์„œ์˜ ์กฐ๊ฑด์€ v-for ๋ฒ”์œ„์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ v-for๊ณผ v-if๋ฅผ ๊ฐ™์ด ์ž‘์„ฑํ•ด๋ฒ„๋ฆฌ๋ฉด

์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด v-for๊ณผ v-if๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

์ •๋‹ต์€ ๋ฐ”๋กœ computed๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ v-for์™€ <template> ์š”์†Œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

1) computed๋ฅผ ํ™œ์šฉํ•ด ์ด๋ฏธ ํ•„ํ„ฐ๋ง๋œ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฐ˜๋ณตํ•˜๋„๋ก ์„ค์ •ํ•ด๋ณด์ž.

2) v-for์™€ template ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ v-if ์œ„์น˜๋ฅผ ์ด๋™์‹œ์ผœ๋ณด์ž.

profile
์ดˆ๋ณด ๊ฐœ๋ฐœ์ž์˜ ์ขŒ์ถฉ์šฐ๋Œ ์„ฑ์žฅ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€