Vue - ์‚ฌ์šฉ์ž ์ง€์ • directive

2022. 3. 2. 22:05ใ†vue

Vue - ์‚ฌ์šฉ์ž ์ง€์ • directive

 

 

 

Vue์—์„œ directive๋Š” Vue ์ž์ฒด์—์„œ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋Š” directive์™€ ์‚ฌ์šฉ์ž ์ง€์ • directive๊ฐ€ ์žˆ๋‹ค.

์ „์ž์˜ ๊ฒฝ์šฐ htmlํƒœ๊ทธ๋ฅผ ๋ณด๋‹ค ๋™์ ์œผ๋กœ, ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ณ , ํ›„์ž์˜ ๊ฒฝ์šฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋””๋ ‰ํ‹ฐ๋ธŒ ์ง€์‹œ์–ด๋ฅผ ์„ค์ •ํ•ด ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํŠน์ • ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • directive๋ฅผ ๋‹ค๋ค„๋ณผ ๊ฒƒ์ด๋‹ค.

 

 

์™œ ์‚ฌ์šฉ์ž ์ง€์ • directive๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? 

1) ์ง€์‹œ์–ด๋ฅผ ์„ ์–ธํ•จ์œผ๋กœ์จ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. (์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ)

2) ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋กœ directive hook์„ ํ†ตํ•ด DOM์— side-effect๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค. (mounted ํ›…์˜ ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๋“ฑ)

 

์‚ฌ์šฉ์ž ์ง€์ • directive์—๋Š” ์ „์—ญ๊ณผ ์ง€์—ญ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ „์—ญ directive ์ •์˜

 

 

์ง€์—ญ directive ์ •์˜

 

์ด๋Ÿฌํ•œ directive๋Š” ํ›…์— ๋”ฐ๋ผ์„œ ์–ธ์ œ ์ง€์‹œ์–ด๋ฅผ ์ ์šฉ์‹œํ‚ฌ์ง€๋ฅผ ์ ์šฉ ์‹œํ‚ฌ ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ํ›… ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  ํ›… ํ•จ์ˆ˜   

bind, inserted, update, componentUpdated, unbind๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

bind : ๋””๋ ‰ํ‹ฐ๋ธŒ๊ฐ€ ์ฒ˜์Œ ์•จ๋ฆฌ๋จผํŠธ์— ๋ฐ”์ธ๋”ฉ ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰. -> ์ผํšŒ์„ฑ์ธ ์ฝ”๋“œ๋Š” ์ด๊ณณ์— ์ •์˜

inserted : ๋ฐ”์ธ๋”ฉ ๋œ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ๋ถ€๋ชจ ๋…ธ๋“œ์— ์‚ฝ์ž… ๋˜์—ˆ์„ ๋•Œ ์ˆ˜ํ–‰ -> mounted์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ํ›….

update : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ ํ›„์— ์‹คํ–‰ -> ์ž์‹์ด ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์ „์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

componentUpdated : ์ปดํฌ๋„ŒํŠธ ์•ˆ์˜ ์ž์‹๋“ค์ด ์—…๋ฐ์ดํŠธ ๋œ ํ›„์— ์‹คํ–‰.

unbind : ๋””๋ ‰ํ‹ฐ๋ธŒ๊ฐ€ ์—˜๋ฆฌ๋จผํŠธ๋กœ๋ถ€ํ„ฐ ์ธ๋ฐ”์ธ๋“œ ๋  ๋•Œ ํ•œ ๋ฒˆ ์ˆ˜ํ–‰.

 

  ๋””๋ ‰ํ‹ฐ๋ธŒ ํ›… ์ „๋‹ฌ์ธ์ž   

el : ๋””๋ ‰ํ‹ฐ๋ธŒ๊ฐ€ ๋ฐ”์ธ๋”ฉ๋œ ์—˜๋ฆฌ๋จผํŠธ. ์ด๋ฅผ ์ด์šฉํ•ด DOM ์กฐ์ž‘ ๊ฐ€๋Šฅ.

binding : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ์„ ๊ฐ€์ง„ ๊ฐ์ฒด. ex) name, value, arg, modifiers

 

์˜ˆ์‹œ ์ฝ”๋“œ

html ๋ถ€๋ถ„

 

script ๋ถ€๋ถ„

 

๊ฒฐ๊ณผ

 

์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž๋ฉด JSON.stringify๋Š” ๊ฐ’์„ Jsonํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๊ณ , name์€ ๋””๋ ‰ํ‹ฐ๋ธŒ ์ด๋ฆ„, value๋Š” ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’. arg๋Š” ์ „๋‹ฌ๋˜๋Š” ์ธ์ž์ด๋‹ค.

 

์ด directive์˜ arg์†์„ฑ์€

 <p v-pin:[direction]="200">I am pinned onto the page at 200px to the left.</p>

์™€ ๊ฐ™์ด ๋™์ ์œผ๋กœ๋„ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰ direction์ด script์˜ data๋ถ€๋ถ„์—์„œ ์ •์˜๋˜์–ด์žˆ์„ ๋•Œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

'vue' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Vue-firebase ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ, ์›น ํ˜ธ์ŠคํŒ…  (0) 2021.08.29
Vue-Composition API  (0) 2021.08.27