๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[Vue] #7 - ์ปดํฌ๋„ŒํŠธ ๋ณธ๋ฌธ

Vue

[Vue] #7 - ์ปดํฌ๋„ŒํŠธ

ruby_s 2021. 8. 6. 11:16
728x90
๋ฐ˜์‘ํ˜•
SMALL

1. ๋‹ค๋ฅธ vueํŒŒ์ผ importํ•ด์˜ค๊ธฐ

  1. vueํŒŒ์ผ ๋งŒ๋“ค์–ด์„œ HTML๋งŒ๋“ค๊ธฐ
  2. ์›ํ•˜๋Š” ๊ณณ์˜ scriptํƒœ๊ทธ ์‚ฌ์ด์—
import ์ด๋ฆ„ from '๊ฒฝ๋กœ';
  1. export default์•ˆ์˜ component์—
์“ธ ์ด๋ฆ„: ๊ฐ€์ ธ์˜จ ์ด๋ฆ„ => DC : Discount or ๊ฐ™์€์ด๋ฆ„ ์“ธ๊ฑฐ๋ฉด ์ด๋ฆ„ ํ•˜๋‚˜๋งŒ ์ ์–ด๋„๋จ => Discount
  1. < Discount />๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

2. props : ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์‹ถ์„ ๋•Œ

App.vue์— ์“ฐ์ธ <DIscount />๋Š” App์˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์ž„

props๋กœ ์ž์‹์—๊ฒŒ ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๋Š” ๋ฒ•
1. ๋ฐ์ดํ„ฐ ์ „์†ก
๋ฐ‘์— ๋ฐ์ดํ„ฐ ๊ณจ๋ผ์„œ ๋ณด๋‚ด๊ธฐ
<์ž์‹ :์ž‘๋ช…๋ฐ์ดํ„ฐ="๋ณด๋‚ผ๋ฐ์ดํ„ฐ" /> or <์ž์‹ v-bind:์ž‘๋ช…๋ฐ์ดํ„ฐ="๋ณด๋‚ผ๋ฐ์ดํ„ฐ" />
=> :์ž‘๋ช…๋ฐ์ดํ„ฐ="๋ณด๋‚ผ๋ฐ์ดํ„ฐ" :์ž‘๋ช…๋ฐ์ดํ„ฐ2="๋ณด๋‚ผ๋ฐ์ดํ„ฐ2" ์—ฌ๋Ÿฌ๊ฐœ ๋‚˜์—ด ๊ฐ€๋Šฅ
2. ์ž์‹์€ props๋กœ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๋“ฑ๋ก
props : {
์ž‘๋ช…ํ•œ ๋ฐ์ดํ„ฐ : ์ž๋ฃŒํ˜•์ด๋ฆ„, //Array, Number ๋“ฑ๋“ฑ
} // ์ž๋ฃŒํ˜•์€ ๋””๋ฒ„๊น…์šฉ์œผ๋กœ ์ ๋Š”๊ฑฐ์ž„
3. ์‚ฌ์šฉ

โš ์ฃผ์˜โš  props๋Š” read-only๋ผ์„œ ๋ฐ›์•„์˜จ๊ฑฐ ์ˆ˜์ • X

ex) <button @click="๋ชจ๋‹ฌ์ฐฝ์—ด๋ ธ๋‹ˆ = false">๋‹ซ๊ธฐ
๋ชจ๋‹ฌ์ฐฝ์—ด๋ ธ๋‹ˆ ๋ผ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋ผ์„œ ์—๋Ÿฌ๋‚จ

์• ์ดˆ์— ์ž์‹์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๋ฉด ๋˜์ง€์•Š๋‚˜?

๋˜๊ธฐ๋‚˜๋Š”๋ฐ ๋ถ€๋ชจ๋„ ์จ์•ผํ•  ๋ฐ์ดํ„ฐ๋ผ๋ฉด ๋ถ€๋ชจ์— ๋งŒ๋“ค์–ด์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค
์œ„๋กœ ์ „์†ก์€ ์–ด๋ ต๋‹ค

3. ์ปดํฌ๋„ŒํŠธ ์•ˆ์—๋Š” ํ•˜๋‚˜์˜ ์นด๋“œ๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ์— ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์“ฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์“ฐ์ž !

<Card :์›๋ฃธ="์›๋ฃธ๋“ค[i]" v-for="(์›๋ฃธ,i) in ์›๋ฃธ๋“ค" :key="i" />

์ด๋Ÿฐ์‹์œผ๋กœ for๋ฌธ์„ ์‚ฌ์šฉํ•˜์ž

728x90
๋ฐ˜์‘ํ˜•
LIST