Mongsi + The Composable Architecture

  • Mongsil Project ๋‹ค์ด์–ด๊ทธ๋žจ
    image

  • ํ™”๋ฉด ๋ณ€ํ™˜ ๋ฒ„ํŠผ ๊ตฌํ˜„ ์™„๋ฃŒ

  • ์ดˆ๊ธฐ ํ™”๋ฉด ๊ตฌํ˜„
    Simulator Screen Recording - iPhone 12 - 2022-04-14 at 00 47 03

  • GeometryReader์„ ์‚ฌ์šฉํ•ด ๋ทฐ์˜ ํฌ๊ธฐ๋ฅผ ์•Œ์•„์™€ button์˜ layout์„ ์žก์•„์คŒ

    • image
  • tabbar top line ๊ทธ๋ ค์ฃผ๋Š” ์ฝ”๋“œ

    • image
  • Simulator Screen Recording - iPhone 11 - 2022-04-15 at 16 01 12

  • back button์„ ๋ˆŒ๋ €์„ ๋•Œ appview๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๊ฒŒ ๊ตฌํ˜„ํ•จ

  • ์•„์ง button์˜ layout์ด ๋งž์ถฐ์ง€์ง€๋Š” ์•Š์•˜์Œ(์ˆ˜์ • ์˜ˆ์ •)

  • code ๋ฆฌ๋ทฐ ๋ฐ›์€ ํ›„ code ๋ฆฌํŒฉํ† ๋ฆฌ์ค‘์ž…๋‹ˆ๋‹ค.

  • Simulator Screen Recording - iPhone 12 - 2022-04-18 at 20 56 36

    • navigationbar๊ฐ€ hidden๋˜์ง€ ์•Š์•„ ๋ฒ„ํŠผ์ด ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ํ˜„์ƒ์„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
      • swiftui ์˜ค๋ฅ˜์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜ hiidenํ•ด๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
      • ํ•ด๊ฒฐ๋ฒ•: MoSonLee/SwiftUI#3 (comment)
        Simulator Screen Recording - iPhone 12 - 2022-04-19 at 21 58 56
  • 1์ฐจ task ์™„๋ฃŒ

    • mainTab์„ ๋งŒ๋“ค์–ด์ค˜์„œ ๊ทธ ์•ˆ์— home, record, storage์˜ view์™€ core๋ฅผ pullback ์‹œ์ผœ ๊ตฌํ˜„
    • recordView๋กœ ์ด๋™์‹œํ‚ด MoSonLee/SwiftUI#2 (comment)
    • back button์ด ๋ˆŒ๋ ธ์„ ๋•Œ ์ด์ „ ํ™”๋ฉด์œผ๋กœ ์ด๋™ MoSonLee/SwiftUI#4 (comment)
    • ๋ฏธ๋ฆฌ ๋ชจ๋“ˆ๋กœ ๋งŒ๋“ค์–ด์ค€ navigationbar์„ ์‚ฌ์šฉํ•ด์คŒ.
  • 2์ฐจ task ์™„๋ฃŒ

    • ๋ณด๊ด€ํ•จ ์„ค์ • ์•„์ด์ฝ˜์— SettingView์™€ Core์—ฐ๊ฒฐํ•˜๊ธฐ
  • 3์ฐจ task ์™„๋ฃŒ

    • storageView๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ loginํ•˜๋ผ๋Š” alert ๋„์›Œ์ฃผ๊ธฐ
      • image
        • tag์™€ selection์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผํ•จ.
        • binding์œผ๋กœ alert์„ ๋„์šฐ๋Š” ์•ก์…˜์„ ๊ฐ€์ ธ์™€์•ผํ•จ
        • binding๊นŒ์ง€๋Š” ์„ฑ๊ณต ๊ทธ๋Ÿฌ๋‚˜ home์—์„œ homeํ™”๋ฉด์„ ๋ˆ„๋ฅด๋ฉด modal์ด ๋œฌ๋Š ์˜ค๋ฅ˜์— ๋ถ€๋”ชํ˜”๋‹ค..!
        • customtabView๋กœ ๋ฐ”๊ฟ”์„œ ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค
          • customtabView๋กœ ๋ทฐ๊ตฌ์„ฑ ์™„๋ฃŒ

            • customTab button action์—์„œ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผํ•˜๋ฏ€๋กœ home๊ณผ storage๋ฅผ pullback ๋ฐ›์•„์˜ค๋Š”๊ฒŒ ๋งž์„๊นŒ?
              • ์•„๋‹ˆ์—ˆ๋‹ค! CustomTabView๋Š” ๋ง๊ทธ๋Œ€๋กœ view
              • action์€ MaintabCore์—์„œ ํ•ด์ฃผ๋Š”๊ฒƒ
  • 4์ฐจ task ์™„๋ฃŒ

    • model ํƒ€์ž… ์ง€์ •
      • ๋‚˜์ค‘์— ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ model type์„ ์ง€์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค(๊ฐ€์ƒ์˜ ๊ฐ’)
      • mock data๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค
        • ์•„์ง mock data๋กœ ๋””๋ฒ„๊น… ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์ฃผ์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค!
          • ๋ชฉ๋ฐ์ดํ„ฐ ๋””๋ฒ„๊น… ํ…Œ์ŠคํŠธ ์™„๋ฃŒ
        • model type ์ง€์ • ์™„๋ฃŒ
          • image
  • 5์ฐจ task ์™„๋ฃŒ

    • ๊ธฐ๋กํ•˜๊ธฐ ์ฒซํ™”๋ฉด ๋ทฐ and core ์ž‘์„ฑ
    • button์„ tabํ–ˆ์„์‹œ datePicker ๋„์›Œ์ฃผ๊ธฐ
      • navigationLink๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฑด ์–ด๋–จ๊นŒ? -> ์‹œ๋„์ค‘ -> ๊ฐœ์†Œ๋ฆฌ์˜€๋‹ค
    • ๊ธ€์ž ์ˆ˜ ์ œํ•œ ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ -> ํ•ด๊ฒฐ์™„๋ฃŒ
    • autoLayout ๋งž์ถฐ์ฃผ๊ธฐ(swiftui๋กœ ๋งž์ถฐ๋Š”๊ฑฐ์— ์• ๋กœ์‚ฌํ•ญ์ด ์žˆ๋‹ค ใ…œใ…œ)
  • 6์ฐจ task ์™„๋ฃŒ

    • settingView and settingcore ๊ตฌํ˜„ํ•˜๊ธฐ
    • layout ์ „๋ฉด ์ˆ˜์ • ์™„๋ฃŒ.
    • ๋งŒ๋“ ์‚ฌ๋žŒ๋“ค view + ๋กœ๊ทธ์•„์›ƒ, ํšŒ์›ํƒˆํ‡ด logic ๊ตฌํ˜„ ๋‚จ์Œ
    • UserDefaults -> sharedState ์ด์šฉ์œผ๋กœ ๋ณ€๊ฒฝ์ค‘
      • ์™„๋ฃŒ
    • ์ฝ”๋“œ ์ „๋ฐ˜์  ๋ฆฌํŒฉํ† ๋ง์ค‘์ž…๋‹ˆ๋‹ค.
    • ์™„๋ฃŒ
  • 7์ฐจ task

    • ๋กœ๊ทธ์ธ ๋ทฐ refactoring
    • Simulator Screen Recording - iPhone 13 Pro Max - 2022-05-31 at 02 36 15
    • ๋ฌธ์ œ์ : ์ด๋ฏธ์ง€์˜ ์›๋ณธ ๋น„์œจ์„ ํƒญ๋ทฐ์•ˆ์—์„œ ์œ ์ง€ํ•ด์ฃผ๋ฉด์„œ ๋‹ค๋ฅธ text๋“ค์— ์˜ํ–ฅ์„ ์•ˆ ๊ฐ€๊ฒŒ ํ•˜๋Š”๋ฒ•์ด ์žˆ์„๊นŒ?
      • ์—†๋‹ค. ํŒจ๋”ฉ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์žก์•„์ค€๋‹ค -> ์ด๋ฏธ์ง€ ๋น„์œจ์ด ๊บ ์ง
      • ์ด๋ฏธ์ง€ ์›๋ณธ ๋น„์œจ ์œ ์ง€ -> ๋ ˆ์ด์•„์›ƒ์ด ๋ฐ”๋€Œ๋Š”๊ฑด ๋‹น์—ฐํ•œ ์ผ(๋””์ž์ธ ํŒ€์—์„œ ๊ทธ๊ฑธ ๊ณ ๋ คํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์ฃผ์ง€ ์•Š์•˜์Œ)
      • ์ด๋ฏธ์ง€์˜ ์›๋ณธ ๋น„์œจ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ 1์ˆœ์œ„ -> ๋”ฐ๋ผ์„œ ๊ฐ ๋‹ค๋ฅธ ๋””๋ฐ”์ด์Šค๋ณ„๋กœ ํŒจ๋”ฉ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”๊ฑธ ๊ฐ์•ˆํ•˜๊ณ  ์žก์•„์ค˜์•ผํ•จ
    • ์นด์นด์˜ค, ์• ํ”Œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ๋ฅผ ํŒจ๋”ฉ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์žก์•„์คฌ์„ ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ
      • ๋””์ž์ธ ํŒ€์—์„œ ์ค€ ์ด๋ฏธ์ง€๋กœ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ํฐ ๊ธฐ๊ธฐ์—์„œ ๋ฒ„ํŠผ ์ด๋ฏธ์ง€๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉฐ ์•ˆ์— ์žˆ๋Š” ํ…์ŠคํŠธ๊ฐ€ ๋Š˜์–ด๋‚˜ ๋ณด์ด๋Š”๊ฑด ๋‹น์—ฐํ•จ
        • ๊ฐ•์ œ์ ์œผ๋กœ frame์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์žก์•„์ค˜ ๋ชจ๋“  ๋””๋ฐ”์ด์Šค์—์„œ ๊ฐ™์€ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ํ•จ
        • ๊ธฐ๊ธฐ๋ณ„ ํŒจ๋”ฉ ๊ฐ’์ด ๋‹ค๋ฅผ ์ˆ˜๋Š” ์žˆ์ฐŒ๋งŒ ๊ฐ์•ˆํ•ด์•ผ ํ•  ๋ถ€๋ถ„
        • ๋กœ๊ทธ์ธ ๋ทฐ ์‹คํ–‰ํ™”๋ฉด
          • Simulator Screen Recording - iPhone 13 Pro Max - 2022-06-01 at 16 26 02
          • ์•Œ๋Ÿฟ์ฐฝ ์œ„์น˜๋Š” ์ถ”ํ›„์— ๋ณ€๊ฒฝํ•ด์ฃผ๊ธฐ๋กœ ํ–ˆ์Œ
  • 8์ฐจ task(์ตœ์ข…)

    • mock๋ฐ์ดํ„ฐ๋กœ ๋„ฃ์–ด๋†“์€ ๊ฐ’๋“ค api ํ†ต์‹ ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ -> ์™„๋ฃŒ
  • 6/23 ์ตœ์ข… ํ…Œ์ŠคํŠธ -> 6/24 1์ฐจ ์‹ฌ์‚ฌ

4/30 ํ˜„์žฌ๊นŒ์ง€ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ๋กœ๊ทธ์ธ์ด ๋˜์ง€ ์•Š์•˜์„ ๋–„
    • Simulator Screen Recording - iPhone 13 - 2022-04-30 at 13 30 37
  • ๋กœ๊ทธ์ธ ์™„๋ฃŒ์‹œ
    • Simulator Screen Recording - iPhone 13 - 2022-04-30 at 13 31 16
    • ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ: ๊ธฐ๋ณธ tabView์—์„œ ํ™”๋ฉด ์ „ํ™˜ํ•ด์ฃผ๋Š” ์ฝ”๋“œ, back button์„ ๋ˆŒ๋ €์„ ๋•Œ ํ™”๋ฉด ๋’ค๋กœ ์ด๋™์‹œํ‚ค๋Š” action, recordButton์„ ๋ˆŒ๋ €์„ ๋•Œ navigationLink๋ฅผ ์‚ฌ์šฉํ•ด ํ™”๋ฉด ์ „ํ™˜ ์ฝ”๋“œ, model type ์ง€์ •
      • ๋ฉ”์ธ ์ฝ”๋”๋‹˜์˜ code review, refactoring, ํŽ˜์–ด ์ฝ”๋”ฉ์œผ๋กœ ์ง์ ‘ ์Šต๋“ํ•˜๋ฉฐ ๋„์›€์„ ๋ฐ›์•„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์”๋‹ˆ๋‹ค.!

5/21 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ํšŒ์› ๋กœ๊ทธ์•„์›ƒ, ํƒˆํ‡ด, makersView ๋นผ๊ณ  ๋ชจ๋‘ ๊ตฌํ˜„ ์™„๋ฃŒ
    • ๋กœ๊ทธ์•„์›ƒ ๊ตฌํ˜„์™„๋ฃŒ(์นด์นด์˜ค, ์• ํ”Œ)
    • ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ํƒˆํ‡ด ํ™•์ธ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
  • pop to root view์—์„œ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Œ -> uikit func๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉ + maintab์˜ selection์„ home์œผ๋กœ ๋ฐ”๊ฟ”์คŒ -> ํ•ด๊ฒฐ ์™„๋ฃŒ
  • makers view ๊ตฌํ˜„ ์™„๋ฃŒ
    • Simulator Screen Recording - iPhone 12 - 2022-05-23 at 22 58 29
    • makersView foreach ์‚ฌ์šฉํ•˜์—ฌ refactor์™„๋ฃŒ
    • ์ถ”๊ฐ€์  layout ์ˆ˜์ • ์™„๋ฃŒ

6/4 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ๊ธฐ๋กํ•˜๊ธฐ, ๊ฒ€์ƒ‰ํ•˜๊ธฐ ๋ทฐ๋งŒ ๋‚จ์€ ์ƒํƒœ

6/7 ํ˜„์žฌ ๋ฐœ๊ฒฌ๋œ issue

  • ํšŒ์›ํƒˆํ‡ด๊ฐ€ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์Œ -> ํ™•์ธ๊ฒฐ๊ณผ ์„œ๋ฒ„๋Š” ์ด์ƒ ์—†์Œ sharedState์˜ userID๋ฅผ ์ง€์›Œ์ง€๋Š” ๋กœ์ง์˜ ์ˆœ์„œ ๋ฌธ์ œ์ธ๋“ฏํ•จ
    • ํ•ด๊ฒฐ ์™„๋ฃŒ

6/12 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ๊ธฐ๋กํ•˜๊ธฐ, ๊ฒ€์ƒ‰ํ•˜๊ธฐ์™€ ์—ฐ๊ด€ api๋Š” ์—ฐ๊ฒฐํ•ด์ฃผ์ง€ ๋ชปํ•œ ์ƒํƒœ
  • ์œ ์ € ๊ฟˆ ์ž‘์„ฑ api forkey๋ฅผ String -> Array๋กœ ์ˆ˜์ • ์š”์ฒญํ•œ ์ƒํƒœ -> ์™„๋ฃŒ
  • testCode ์ž‘์„ฑ์— ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Œ

6/16 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ์œ ์ € ๋‹ค์ด์–ด๋ฆฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์˜ค๋Š” api fix complete
  • Simulator Screen Recording - iPhone 13 Pro Max - 2022-06-16 at 02 13 08
    • ์‚ญ์ œํ•˜๊ธฐ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ƒํƒœ -> ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ํŒ๋‹จ๋œ๋‹ค.
      • image
      • image
    • ์‚ญ์ œํ•˜๊ธฐ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ƒํƒœ -> ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ํŒ๋‹จ๋œ๋‹ค.
    • postman์—์„œ ํ™•์ธํ•ด๋ดค์„ ๋•Œ ์œ ์ € ์นด๋“œ id๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ๋„ฃ์œผ๋ฉด ์•ˆ๋œ๋‹ค. -> ์„œ๋ฒ„์— ์ˆ˜์ • ์š”์ฒญ ์˜ˆ์ •

6/19 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • Diary delete, set ๋กœ์ง ์—ฐ๊ฒฐ ์™„๋ฃŒ
  • onAppear ํ•  ๋•Œ diarycount๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด set ๋˜๋Š” ์†๋„ ๋ณด๋‹ค ๋Š๋ ค 0์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ -> set ์‹œํ‚ค๋ฉด์„œ ๊ฐ™์ด count๋ฅผ ํ•ด์ค˜์„œ ๋ฌธ์ œ ํ•ด๊ฒฐ(delete ํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

6/21 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ์ตœ์ข… task๋งŒ ๋‚จ์€ ์ƒํƒœ
  • 6/25 ์‹ฌ์‚ฌ ์˜ˆ์ •

6/24 ํ˜„์žฌ ๊ตฌํ˜„๋œ ์ƒํƒœ

  • ๊ฒ€์ƒ‰ํ•˜๊ธฐ ๋ณ€๊ฒฝ๋œ ํ”Œ๋กœ์šฐ๋กœ ๋Œ€์‘ ์™„๋ฃŒ(์„œ๋ฒ„์—์„œ ๋ณ€๊ฒฝ์ „์ด๋ผ ํ…Œ์ŠคํŠธ๋Š” ๋ถˆ๊ฐ€ํ•œ ์ƒํƒœ)

6/25

  • ํด๋ผ ์ตœ์ข… ๋Œ€์‘ ๋!

6/26

  • ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

issuesโš ๏ธ

๋””ํ”„๋งŒ ์ˆ˜๋ฃŒ์™„๋ฃŒ ๐Ÿ’ซ

  • image

The composable Architecture

  • composable architecture์˜ ๋‹ค์„ฏ๊ฐ€์ง€ ํ•„์ˆ˜ ํƒ€์ž…
    • State: business logic์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ UI๋ฅผ ๊ทธ๋ฆด ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…
    • Action: user๊ฐ€ ํ•˜๋Š” ํ–‰๋™์ด๋‚˜ notification ๋“ฑ ์•ฑ์—์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ–‰๋™์„ ๋‚˜ํƒ€๋ƒ„
    • Environment: API client์™€ ๊ฐ™์ด ์•ฑ์ด ํ•„์š”๋กœ ํ•˜๋Š” ์˜์กด์„ฑ(dependancy)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํƒ€์ž…
    • Reducer: ์–ด๋–ค action์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์ง€๊ธˆ state๋ฅผ ๋‹ค์Œ ์ƒํƒœ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜. ๋˜ํ•œ reducer๋Š” ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” effect๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. ๋ณดํ†ต Effect ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
    • Store: ์‹ค์ œ๋กœ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜๋Š” ๊ณต๊ฐ„. ์‚ฌ์šฉ์ž์˜ Action์„ ๋ณด๋‚ด Store๋Š” Reducer์™€ Effect๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ store์—์„œ ์ผ์–ด๋‚˜๋Š” state ๋ณ€ํ™”๋ฅผ observeํ•ด์„œ ui๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ๊ฑฐ์นœ๋‹ค. State, Action, reducer(pullback์œผ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์žˆ์Œ)