๐Ÿ’ก๋ทฐ์—‘์Šค(Vuex), ๋ทฐ์˜ ๋ฐ˜์‘์„ฑ(Vue Reactivity)

sujinยท2021๋…„ 12์›” 9์ผ
0

๋ทฐ

๋ชฉ๋ก ๋ณด๊ธฐ
5/6
post-thumbnail

01. Vuex(๋ทฐ์—‘์Šค)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ๊ด€๋ฆฌ(state management)๋ฅผ ๋•๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์ƒํƒœ๋ž€?

  • ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ณต์œ ํ•˜๊ณ  ์žˆ์„ ๋•Œ, ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.

์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ?

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ์กด์žฌํ•  ๋•Œ

    • props๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ์‚ฌ์ด์— ์žˆ๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— props๋ฅผ ์„ค์ •ํ•ด ์ค˜์•ผํ•œ๋‹ค.
    • ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ธฐ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด ์ง„๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ทœ์น™์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์„ ๋•Œ

    • props ๋Œ€์‹  ์ด๋ฒคํŠธ ๋ฒ„์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ƒ-ํ•˜์œ„ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ ๋„ ํ•œ ๋ฒˆ์— ์ปดํฌ๋„ŒํŠธ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ, ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ์•„๋‹Œ ์…€ ์ˆ˜ ์—†์ด ๋งŽ์€ ๋ฐ์ดํ„ฐ ์ด๋ฆ„์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์ด ์–ด๋””์„œ ์™€์„œ ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋œ๋‹ค.

์ƒํƒœ ๊ด€๋ฆฌ

  • ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ…Œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

    vuex ์ „์ฒด ํ๋ฆ„๋„


๐Ÿ‘‰vuex ๋” ์‚ดํŽด๋ณด๊ธฐ


02. Vue Reactivity(๋ทฐ์˜ ๋ฐ˜์‘์„ฑ)

๋ทฐ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ž๋™์œผ๋กœ ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•˜๋Š” ํŠน์„ฑ
  • ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€์ ์œผ๋กœ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•, ๊ฐ€์ƒ ๋”์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•, ํ™”๋ฉด์„ ๋น ๋ฅด๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์— ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š๊ณ  ๋”์„ ์ถ”๊ฐ€,์‚ญ์ œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ๋‹ค.

๋ทฐ์—์„œ ์ž๋™์œผ๋กœ ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•˜๋Š” ์›๋ฆฌ

  • getter, setter

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, data์†์„ฑ์— ์ •์˜ ๋œ ๊ฐ์ฒด๋“ค์€ ๋ณ€ํ™˜ ์ž‘์—…์„ ๊ฑฐ์นœ๋‹ค.
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ data์— ์ •์˜๋œ ๋ชจ๋“  ์†์„ฑ(๊ฐ์ฒด)์„ getter,setter ์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • getter์™€ setter๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด ์•„๋‹ˆ๊ณ , ๋ทฐ ์ธ์Šคํ„ด์Šค์— ์ •์˜ํ•ด ๋†“์€ data ์†์„ฑ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธธ ๋•Œ ๋ทฐ์—์„œ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‚ด๋ถ€์  ์†์„ฑ์ด๋‹ค.
    • getter์™€ setter๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์žฅ API์ธ Object.defineProperty() ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
  • watcher

    • ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ์กด์žฌํ•˜๋Š” ์†์„ฑ, ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.
    • ์ธ์Šคํ„ด์Šค๊ฐ€ ํ™”๋ฉด์— ์˜ฌ๋ผ๊ฐ€๊ณ  ๋‚˜์„œ ํŠน์ • data ์†์„ฑ์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ ‘๊ทผํ•˜๋ฉด watcher์—์„œ ํ•ด๋‹จ ์‚ฌ์‹ค์„ ๊ฐ์‹œํ•˜๊ณ  ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค.
  • ๋ทฐ์˜ ๋ฐ˜์‘์„ฑ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์ ์— ์ƒ๊ธด๋‹ค.

  • ๋”ฐ๋ผ์„œ, ์ธ์Šคํ„ด์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ data ์†์„ฑ์— ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  data ์†์„ฑ์— ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ทธ ๊ฐ์ฒด์—๋Š” ๋ฐ˜์‘์„ฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.

  • ๋ฐ˜์‘์„ฑ์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ณ€ํ™”๊ฐ€ ์žˆ๋“  ์—†๋“  ๋ทฐ์—์„œ ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ฐฑ์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

  • ๋ทฐ ๋ฐ˜์‘์„ฑ ๊ณต์‹ ๊ฐ€์ด๋“œ



์ฐธ๊ณ  do it vue.js

profile
๊ฐœ๋ฐœ๋Œ•๋ฐœ

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 8์›” 17์ผ

์ž˜ ๋ดค์Šต๋‹ˆ๋‹ค ^^

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ