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๋ ํ ์ ๋ฐ๋ผ์ ์ธ์ ์ง์์ด๋ฅผ ์ ์ฉ์ํฌ์ง๋ฅผ ์ ์ฉ ์ํฌ ์๊ฐ ์๋๋ฐ ํ ํจ์๋ ์๋์ ๊ฐ๋ค.
ํ ํจ์
bind, inserted, update, componentUpdated, unbind๊ฐ ์กด์ฌํ๋ค.
bind : ๋๋ ํฐ๋ธ๊ฐ ์ฒ์ ์จ๋ฆฌ๋จผํธ์ ๋ฐ์ธ๋ฉ ๋ ๋ ํ ๋ฒ๋ง ์ํ. -> ์ผํ์ฑ์ธ ์ฝ๋๋ ์ด๊ณณ์ ์ ์
inserted : ๋ฐ์ธ๋ฉ ๋ ์๋ฆฌ๋จผํธ๊ฐ ๋ถ๋ชจ ๋ ธ๋์ ์ฝ์ ๋์์ ๋ ์ํ -> mounted์ ๋น์ทํ ์ญํ ์ ํ๋ ํ .
update : ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ ๋ ํ์ ์คํ -> ์์์ด ์ ๋ฐ์ดํธ ํ๊ธฐ ์ ์ผ ์๋ ์๋ค.
componentUpdated : ์ปดํฌ๋ํธ ์์ ์์๋ค์ด ์ ๋ฐ์ดํธ ๋ ํ์ ์คํ.
unbind : ๋๋ ํฐ๋ธ๊ฐ ์๋ฆฌ๋จผํธ๋ก๋ถํฐ ์ธ๋ฐ์ธ๋ ๋ ๋ ํ ๋ฒ ์ํ.
๋๋ ํฐ๋ธ ํ ์ ๋ฌ์ธ์
el : ๋๋ ํฐ๋ธ๊ฐ ๋ฐ์ธ๋ฉ๋ ์๋ฆฌ๋จผํธ. ์ด๋ฅผ ์ด์ฉํด DOM ์กฐ์ ๊ฐ๋ฅ.
binding : ์ฌ๋ฌ๊ฐ์ง ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด. ex) name, value, arg, modifiers
์์ ์ฝ๋
์ฝ๋๋ฅผ ์ดํด๋ณด์๋ฉด 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 |