/react-mobx-movie

react-mobx-movie

Primary LanguageJavaScript

๐Ÿ‘ฉโ€๐Ÿ’ปํ”„๋กœ์ ํŠธ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” MobX๋ฅผ ํ†ตํ•œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ๊ณต๋ถ€ํ•ด๋ณผ ๋ชฉ์ ์œผ๋กœ
React์™€ MobX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ์˜ํ™”์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.


๐Ÿ’ป ์‚ฌ์ดํŠธ

์•„๋ž˜ ๋งํฌ์—์„œ ํ”„๋กœ์ ํŠธ ๋ฐ๋ชจ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

MobX_Movie.mp4

๐Ÿ“† ๊ธฐ๊ฐ„

  • 2021.04 ~ 2021.05

๐Ÿ“—์‚ฌ์šฉ๊ธฐ์ˆ 

  • Front End
    • HTML5 / CSS3
    • React
    • React Hooks
    • MobX
    • SCSS(BEM ํ™œ์šฉ)

๐Ÿ“๋‹ด๋‹น์—…๋ฌด

  • MobX๋ฅผ ํ™œ์šฉํ•œ ์ƒํƒœ๊ด€๋ฆฌ
  • TMDB API๋ฅผ ์‚ฌ์šฉํ•œ ์˜ํ™”์ •๋ณด๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ƒ์„ธ์ •๋ณด, ํŠธ๋ ˆ์ผ๋Ÿฌ)
  • Material-UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋” ๊ตฌํ˜„
  • BEM ๋ฐฉ๋ฒ•๋ก ์„ ์ ์šฉํ•œ SCSS๋กœ ์›น ๋””์ž์ธ ๊ตฌ์„ฑ
  • Transaction, Transition์„ ์‚ฌ์šฉํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ (๋ฐฐ๊ฒฝํ™”๋ฉด ์ „ํ™˜)

๐Ÿ“œ๊ตฌํ˜„๊ธฐ๋Šฅ

  • ๋ฐฐ๊ฒฝํ™”๋ฉด ์ „ํ™˜
  • ๋ฉ”๋‰ด ์„ ํƒ
  • ๊ฒ€์ƒ‰๊ธฐ๋Šฅ
  • ์˜ํ™” ์ƒ์„ธ์ •๋ณด ํ™•์ธ
  • ์˜ํ™” ํŠธ๋ ˆ์ผ๋Ÿฌ ํ™•์ธ
  • ๋ฐ˜์‘ํ˜• ์›น

๐ŸŒต ํ›„๊ธฐ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Redux ๋ง๊ณ  MobX๋ฅผ ํ†ตํ•ด ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
MobX๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ง์ ‘ ๊ฒฝํ—˜ํ•ด๋ณด๋‹ˆ
MobX๋Š” ๋ถˆ๋ณ€์„ฑ์„ ๋ฐ˜๋“œ์‹œ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๊ณ , ์ฝ”๋“œ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ  ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ๋น„๋™๊ธฐ ๋™์ž‘ ์•ก์…˜์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด thunk ๋“ฑ์˜ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๋ถˆํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ
React ํ•จ์ˆ˜ํ˜•์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ hooks๋ฅผ ์‚ฌ์šฉ์ค‘์ด์—ˆ๋Š”๋ฐ
mobx-react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด, decorators(@action, @observable) ์—†์ด๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ฒฝํ—˜์œผ๋กœ ๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ํ”„๋กœ์ ํŠธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š”,
Redux ๋ง๊ณ ๋„ MobX ๋˜ํ•œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์•Œ๋งž๋‹ค๊ณ  ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.