[Vue.js] ๊ธฐ์ดˆ ๊ฐœ๋… ์ •๋ฆฌ - data(), Data ์ฒ˜๋ฆฌ

2022. 3. 8. 14:42ใ†Front-End ์ž‘์—…์‹ค/Vue.js

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ—‚ ๋ชฉ์ฐจ

[Vue.js] ๊ธฐ์ดˆ ๊ฐœ๋… ์ •๋ฆฌ - ๊ธฐ๋ณธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

[Vue.js] ๊ธฐ์ดˆ ๊ฐœ๋… ์ •๋ฆฌ - Vue Router

[Vue.js] ๊ธฐ์ดˆ ๊ฐœ๋… ์ •๋ฆฌ - Vue LifeCycle Hook

[Vue.js] ๊ธฐ์ดˆ ๊ฐœ๋… ์ •๋ฆฌ - data(), Data ์ฒ˜๋ฆฌ

[Vue.js] ๊ธฐ์ดˆ ๊ฐœ๋… ์ •๋ฆฌ - Watch, Array, for๋ฌธ(๋ฐ˜๋ณต๋ฌธ), if๋ฌธ

 

 

 

๐Ÿฑ Git Hub ์ฃผ์†Œ : https://github.com/junyharang-FrontEnd-coding-study/vue.js-study

๐Ÿ“– ์ฐธ๊ณ  ์ž๋ฃŒ : https://www.youtube.com/watch?v=sqH0u8wN4Rs

 

 

 

๐Ÿš€ data() ํ•จ์ˆ˜๋ž€?

Vue.js์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ Data๋ฅผ Handlingํ•˜๊ณ , Data๋ฅผ Binddingํ•˜๊ณ , Data๋ฅผ Getํ•˜๋Š” ๊ฒƒ์ด์—์š”.
์ด๊ฑธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ data() ํ•จ์ˆ˜๋ž๋‹ˆ๋‹ค!

 

data()

 

๋จผ์ € data๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ , return๋ฌธ์— ๋‚ด์šฉ์„ ์ ์–ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”.

Home.vue

 

์œ„์™€ ๊ฐ™์ด return๋ฌธ์— ๊ฐ์ฒด Key์™€ Value๋ฅผ ์ž…๋ ฅ ํ•ด์ฃผ๊ณ , html code ๋ถ€๋ถ„์— ํ•ด๋‹น Data๊ฐ€ ์ถœ๋ ฅ ๋˜์—ˆ์œผ๋ฉด ํ•˜๋Š” ๊ณณ์— {{}} ์ด๋ ‡๊ฒŒ ์ค‘๊ด„ํ˜ธ๋ฅผ ๋‘ ๊ฐœ๋ฅผ ํฌ๊ฐ  ๋’ค ๊ฐ์ฒด Key ์ด๋ฆ„์„ ์ ์–ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์›น ํŽ˜์ด์ง€ ๋‚ด์— `Welcom to JunyHarang ์ฃผ๋‹ˆํ•˜๋ž‘์˜ Vue.js ๊ณต๋ถ€`๊ฐ€ ์ถœ๋ ฅ์ด ๋˜๊ณ ,
{{title2}} ๋ผ๊ณ  ํ•˜๊ฒŒ ๋˜๋ฉด `Welcom to JunyHarang ๋‚˜๋งŒ์˜ ์›น ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ!๊ฐ€ ์ถœ๋ ฅ์ด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

์œ„์˜ ๋ฐฉ์‹์€ Text ๋ฐฉ์‹์œผ๋กœ Data๋ฅผ Binddingํ•œ ๋ฐฉ์‹์ด๊ณ , ์ด์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” Data๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ์ด์—์š”.

<input type="text" value="abc" />

๋จผ์ € ์œ„์™€ ๊ฐ™์ด html Code๋ฅผ ์งœ๊ฒŒ ๋˜๋ฉด input Box์— `abc`๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ๋ณด์ด๊ฒŒ ๋  ๊ฒƒ์ด์—์š”.
Vue.js์—์„œ๋Š” value ๋Œ€์‹  ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—์š”.

<input type="text" v-model="" />

 

 

์œ„์™€ ๊ฐ™์ด ํ•˜๊ฒŒ ๋˜๋ฉด input Box์— `์ฃผ๋‹ˆํ•˜๋ž‘`์ด ๋ณด์ด๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

์ด ๋ฐฉ์‹์€ One-way ๋ฐฉ์‹์ด ์•„๋‹ˆ๊ณ , Two-way ๋ฐฉ์‹์ธ๋ฐ, One-way Bindding ๋ฐฉ์‹์€ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ Data๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋๋‚˜๋Š” ๊ฒƒ์ด๊ณ , Two-way Bindding๋Š” Data๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ์ด์šฉ์ž๊ฐ€ Data๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด data() ์•ˆ์— inpu1์— ํ•ด๋‹น Data Value๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๋ฐฉ์‹์ธ ๊ฒƒ์ด์—์š”.

 

์œ„์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด button Tag๋ฅผ ๋งŒ๋“  ๊ฒƒ์ด์—์š”. ์•„ ์ฐธ! htm์—์„œ button์˜ Event ์ด๋ฆ„์€ onclick์ด์ง€๋งŒ, Vue.js์—์„œ๋Š” @click์ด๋ผ๊ณ  ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

Vue.js๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ methods: {} ์•ˆ์— ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋ž˜์„œ getData() ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ methods์—๋‹ค๊ฐ€ ๋„ฃ์—ˆ๊ณ , ๊ฒฝ๊ณ ์ฐฝ์„ ๋„์šฐ๊ฒŒ ํ•˜๋Š”๋ฐ, data() ์•ˆ์— ์žˆ๋Š” input1 (this.input1)์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ํ•œ ๊ฒƒ์ด์—์š”.

 

 

input Box์— ์ž…๋ ฅ Data๋ฅผ ๊ฒฝ๊ณ ์ฐฝ์—์„œ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

์ด๋ฒˆ์—๋Š” setData๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” button์„ ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.
์œ„์™€ ๊ฐ™์ด set Button์„ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด input1์— ๊ฐ’์„ 12345๋กœ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

๋ฐ˜์‘ํ˜•

 

๋ฐ”๋กœ ์ด ์ƒํƒœ์—์„œ `set` Button์„ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์–ด์š”!

 

 

 

728x90
๋ฐ˜์‘ํ˜•