μνλ μ΄λμ λ§λ€μ΄μΌ ν κΉ?μνλ "λκ° μ΄ κ°μ μ±
μμ ΈμΌ νλκ°?"λ‘ νλ¨νλ©΄ λλ€.μν μμ± μμΉμ¬μ© μμ μμλν APIμ»΄ν¬μ λΈ λ΄λΆμμ μ»΄ν¬μ λΈ λ΄λΆμμλ§ μ¬μ©UI λ‘μ§ μ μ©, λ¨μκ°rememberμ»΄ν¬μ λΈ λ΄λΆμμ μ
λ ₯κ°, μ ν μν λ±νλ©΄ νμ νμλ μ μ§ν΄μΌ ν μνrememberSaveableViewModelμ¬μ©μ λ°μ΄ν°, λ€νΈμν¬ κ²°κ³Ό λ±λΉμ¦λμ€ λ‘μ§, μ¬λ¬ UIμμ 곡μ mutableStateOf, StateFlow λ± νλ©΄ νμ μ κ°μ΄ μ¬λΌμ§λ©΄ μ λλ€λ©΄ β rememberSaveableλ°μ΄ν°κ° μ¬λ¬ UIμμ 곡μ λκ±°λ λ‘μ§μ΄ 볡μ‘νλ€λ©΄ β ViewModel μ¬μ©μμval viewModel: MyViewModel = viewModel()val uiState by viewModel.uiS..
uiλ μ΄μ΄
μλλ‘μ΄λ μ±μ λ§λ€λ€ 보면 UI μν(UI state)λ₯Ό μ΄λ»κ² κ΄λ¦¬ν μ§ κ³ λ―Όμ΄ λ§μμ§λ€. νΉν μνλ₯Ό μ΄λμ λ§λ€κ³ , λκ° μ±
μμ§κ³ , μ΄λ»κ² UIμ μ°κ²°ν μ§κ° μ€μνλ€. UI μνλ?μ± νλ©΄(UI)μ κΈ°λ³Έμ μΌλ‘ λ°μ΄ν°μ λ°λΌ λ°λλ€. μλ₯Ό λ€μ΄ λ‘λ© μ€μΌ λλ μ€νΌλκ° λκ³ , λ°μ΄ν°κ° λ‘λλλ©΄ 리μ€νΈλ₯Ό 보μ¬μ£Όκ³ , μλ¬κ° λλ©΄ λ©μμ§λ₯Ό 보μ¬μ£Όλ μμ΄λ€.μ΄μ²λΌ νλ©΄μ ꡬμ±νλ λ° νμν λ°μ΄ν°λ₯Ό UI μν(UI State)λΌκ³ λΆλ₯Έλ€. λ³΄ν΅ λ€μ μΈ κ°μ§ μνκ° μλ€.λ‘λ© μν (Loading)μ±κ³΅ μν (Success)μλ¬ μν (Error)κ·Έλ¦¬κ³ μ΄ μνλ λ¨λ°©ν₯ λ°μ΄ν° νλ¦(Unidirectional Data Flow) μμμ κ΄λ¦¬λμ΄μΌ νλ€. μ¦, λ°μ΄ν°λ ν λ°©ν₯μΌλ‘λ§ νλ¬κ°μΌ μμΈ‘ κ°λ₯νκ³ ..

μλλ‘μ΄λ μ ν리μΌμ΄μ
κ°λ°μμ UI μν κ΄λ¦¬λ μ¬μ©μ κ²½νμ ν΅μ¬ μμλ€. νΉν, Jetpack Composeμ κ°μ μ μΈν UI νλ μμν¬μμλ μνμ μ΄λ²€νΈλ₯Ό λͺ
νν κ΄λ¦¬νλ κ²μ΄ μ€μνλ€. μ΄λ₯Ό ν¨κ³Όμ μΌλ‘ ꡬννλ λ°©λ² μ€ νλκ° μν νλλ₯Ό νμ©νλ κ²μ΄λ€. μνλ?UIμ μν(State)λ μ¬μ©μμ μ
λ ₯μ΄λ μΈλΆ λ°μ΄ν° λ³νμ λ°λΌ λ°λλ κ°μ΄λ€. μνλ UIλ₯Ό κ²°μ μ§λ μ€μν μμλ‘, μ μΈν UI νλ μμν¬μμλ μνκ° λ³κ²½λλ©΄ UIκ° μλμΌλ‘ μ
λ°μ΄νΈλλ€.μνμ μμμ¬μ©μκ° λ²νΌμ λλ¬ λ‘λ© μ€ μνκ° νμ±νλ¨API μμ² ν λ°μ΄ν°λ₯Ό κ°μ Έμ νλ©΄μ νμ체ν¬λ°μ€κ° μ νλμλμ§ μ¬λΆμ΄λ¬ν μνλ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ μν νλκ° νμνλ€. λ‘μ§μ΄λ?UI μνλ μ μ μ΄μ§ μμΌλ©° μ ν리μΌμ΄..
μλλ‘μ΄λ μ±μμ UI μ΄λ²€νΈλ μ¬μ©μμ μ ν리μΌμ΄μ
κ°μ ν΅μ¬μ μΈ μνΈμμ©μ λ΄λΉνλ€. μλ₯Ό λ€μ΄, λ²νΌ ν΄λ¦, μ€ν¬λ‘€, μ
λ ₯ νλ λ³κ²½ λ±μ λμμ΄ λͺ¨λ μ΄λ²€νΈλ‘ μ²λ¦¬λλ€. μ΄λ¬ν μ΄λ²€νΈλ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νμ§ μμΌλ©΄ μ±μ μλ΅μ±μ΄ λ¨μ΄μ§κ±°λ μκΈ°μΉ λͺ»ν λμμ΄ λ°μν μ μλ€. λ°λΌμ, 체κ³μ μΈ μ΄λ²€νΈ μ²λ¦¬ λ°©μμ΄ νμνλ€. UI μ΄λ²€νΈ μ²λ¦¬μ κΈ°λ³Έ μμΉ1. λ¨λ°©ν₯ λ°μ΄ν° νλ¦(One-way Data Flow, UDF) μ μ§μλλ‘μ΄λμμ UI μνλ₯Ό κ΄λ¦¬ν λ λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ μ μ§νλ κ²μ΄ μ€μνλ€.μ¦, μ΄λ²€νΈ β μν λ³κ²½ β UI μ
λ°μ΄νΈμ νλ¦μ λ°λΌμΌ νλ€.μ΄λ¬ν ꡬ쑰λ₯Ό λ°λ₯΄λ©΄ μν λ³νμ μμΈμ μΆμ νκΈ° μ¬μμ§κ³ , λλ²κΉ
μ΄ κ°νΈν΄μ§λ€. λν, μκΈ°μΉ λͺ»ν λΆμμ©μ λ°©μ§νμ¬ μ μ§λ³΄μμ±μ ..

μλλ‘μ΄λ μ±μ UI λ μ΄μ΄λ μ¬μ©μμμ μνΈμμ©μ μ²λ¦¬νλ©°, νλ©΄μ λ°μ΄ν°λ₯Ό νμνλ ν΅μ¬μ μΈ μν μ νλ€.μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ κ³ λ €ν UIλ₯Ό ꡬμΆνλ €λ©΄ κ΄μ¬μ¬μ λΆλ¦¬, λ¨λ°©ν₯ λ°μ΄ν° νλ¦(UDF), μν κ΄λ¦¬ λ±μ μμΉμ λ°λ₯΄λ κ²μ΄ μ€μνλ€. 1. UI λ μ΄μ΄μ ν΅μ¬ κ΅¬μ± μμUI λ μ΄μ΄λ ν¬κ² λ κ°μ§ μμλ‘ κ΅¬μ±λλ€.UI μμ: View λλ Jetpack Composeλ₯Ό μ¬μ©ν΄ UIλ₯Ό ꡬμ±νλ€.μν νλ(State Holder): UI μνλ₯Ό κ΄λ¦¬νλ©°, UI μμμ λ°μ΄ν° μμ€λ₯Ό μ°κ²°νλ€. μΌλ°μ μΌλ‘ ViewModelμ΄ μ΄ μν μ μννλ€.π ν΅μ¬ κ°λ
: UI μμλ μνλ₯Ό νννλ μν λ§ λ΄λΉνκ³ , μν κ΄λ¦¬λ μν νλ(ViewModel)κ° μ±
μμ§λλ‘ λΆλ¦¬νλ κ²μ΄ μ€μνλ€. 2. λ¨λ°©ν₯..