Vue.js Component - swkim0128/PARA GitHub Wiki
Vue์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋
HTML Element๋ฅผ ํ์ฅํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์บก์ํ
Vue Component๋ Vue Instance์ด๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ต์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ
Life Cycle Hook ์ฌ์ฉ ๊ฐ๋ฅ.
์ ์ญ ์ฝคํฌ๋ํธ์ ์ง์ญ ์ปดํฌ๋ํธ
์ ์ญ ์ปดํฌ๋ํธ๋ฅผ ๋ฑ๋กํ๋ ค๋ฉด, Vue.component(tagName, options)๋ฅผ ์ฌ์ฉ
๊ถ์ฅํ๋ ์ปดํฌ๋ํธ ์ด๋ฆ : ์ผ๋ฐฅ ํ๊ธฐ๋ฒ( ์ ๋ถ ์๋ฌธ์, -) ์ด๋ฆ ํ๊ธฐ๋ฒ ์ฐธ์กฐ, Style Guide(๋ช ๋ช ๊ท์น)
์ปดํฌ๋ํธ๋ฅผ components ์ธ์คํด์ค ์ต์ ์ผ๋ก ๋ฑ๋กํจ์ผ๋ก์จ ๋ค๋ฅธ ์ธ์คํด์ค/์ปดํฌ๋ํธ์ ๋ฒ์์์๋ง ์ฌ์ฉํ ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ฌธ์
ํด๊ฒฐ
์์(๋ถ๋ชจ) - ํ์(์์) ์ปดํฌ๋ํธ ๊ฐ์ data ์ ๋ฌ ๋ฐฉ๋ฒ
๋ถ๋ชจ์์ ์์ : props๋ผ๋ ํน๋ณํ ์์ฑ์ ์ ๋ฌ
์์์์ ๋ถ๋ชจ : event๋ก๋ง ์ ๋ฌ ๊ฐ๋ฅ
ํ์ ์ปดํฌ๋ํธ๋ ์์ ์ปดํฌ๋ํธ์ ๊ฐ์ ์ง์ ์ฐธ์กฐ ๋ถ๊ฐ๋ฅ.
data์ ๋ง์ฐฌ๊ฐ์ง๋ก props ์์ฑ์ ๊ฐ์ template์์ ์ฌ์ฉ์ด ๊ฐ๋ฅ
- new Vue()๋ก ์์ ์ปดํฌ๋ํธ์ธ ์ธ์คํด์ค๋ฅผ ํ๋ ์์ฑ
- Vue.component()๋ฅผ ์ด์ฉํ์ฌ ํ์ ์ปดํฌ๋ํธ์ธ child-component๋ฅผ ์์ฑ
-
๋ด๋ถ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ์ ์ปดํฌ๋ํธ๊ฐ ๋๋ค. ์ฒ์ ์์ฑํ ์ธ์คํด์ค ๊ฐ์ฒด๊ฐ \#app์ ์์๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ์ ์์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ๋ค.
- ํ์ ์ปดํฌ๋ํธ์ props ์์ฑ์ ์ ์ํ๋ค. ['propsdata']
- html์ ์ปดํฌ๋ํธ ํ๊ทธ(child-component)๋ฅผ ์ถ๊ฐํ๋ค.
- ํ์ ์ปดํฌ๋ํธ์ v-bind ์์ฑ์ ์ฌ์ฉํ๋ฉด ์์ ์ปดํฌ๋ํธ์ data์ key์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. (message)
- ์์ ์ปดํฌ๋ํธ์ message ์์ฑ ๊ฐ์ธ String ๊ฐ์ด ํ์ ์ปดํฌ๋ํธ์ propsdata๋ก ์ ๋ฌ๋๋ค.
- ํ์ ์ปดํฌ๋ํธ์ template ์์ฑ์ ์ ์๋ '{{ propsdata}}'์๊ฒ ์ ๋ฌ๋๋ค.
- ์ปดํฌ๋ํธ ๋ฐ props์๋ ๋ฌ๋ฆฌ, ์ด๋ฒคํธ๋ ์๋ ๋์๋ฌธ์ ๋ณํ์ ์ ๊ณตํ์ง ์๋๋ค.
- ๋์๋ฌธ์๋ฅผ ํผ์ฉํ๋ ๋์ ์ emitํ ์ ํํ ์ด๋ฒคํธ ์ด๋ฆ์ ์์ฑํ๋ ๊ฒ์ ๊ถ์ฅ
- v-on ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ํญ์ ์๋์ผ๋ก ์๋ฌธ์ ๋ณํ๋๊ธฐ ๋๋ฌธ์ v-on:myEvent๋ ์๋์ผ๋ก v-on:myevent๋ก ๋ณํ๋๋ค. ์ด๋ฆ์ด my-event์ผ ๊ฒฝ์ฐ myEvent ์ด๋ฒคํธ๋ฅผ ๋ค์ ์ ์๋ค.
- ์ด๋ฌํ ์ด์ ๋๋ฌธ์, ์ด๋ฒคํธ ์ด๋ฆ์๋ kebab-case๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋จ.
v-bind๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ชจ์ ๋ฐ์ดํฐ์ props๋ฅผ ๋์ ์ผ๋ก ๋ฐ์ธ๋ฉ ํ ์ ์๋ค.
๋ฐ์ดํฐ๊ฐ ์์์์ ์ ๋ฐ์ดํธ ๋ ๋๋ง๋ค ํ์ ๋ฐ์ดํฐ๋ก๋ ์ ๋ฌ๋๋ค.
v-bind์ ๋ํ ๋จ์ถ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํ๋ค.
์ค๋ธ์ ํธ์ ๋ชจ๋ ์์ฑ์ ์ ๋ฌํ ๊ฒฝ์ฐ, v-bind:prop-name ๋์ v-bind๋ง ์์ฑํจ์ผ๋ก์จ ๋ชจ๋ ์์ฑ์ prop์ผ๋ก ์ ๋ฌํ ์ ์๋ค.
์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ๋์
์ด๋ฒคํธ ์ด๋ฆ
ํ์ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๊ฐ ์ง์ ํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ($emit)
์์ ์ปดํฌ๋ํธ๋ ํ์ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ์์ (on)ํ์ฌ data ์ฒ๋ฆฌ
๋น์ด ์๋ Vue Instance ๊ฐ์ฒด๋ฅผ Event Bus๋ก ์ฌ์ฉ
๋ณต์กํด์ง ๊ฒฝ์ฐ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Vuex ์ฌ์ฉ ๊ถ์ฅ