2. React State
React State์ ๋ํด ๋ช ํํ๊ฒ ์ดํดํ๊ณ , ์ฝ๋ ๋ฆฌํฉํฐ๋ง ์๋๋ฅผ ํ์ ํ๊ณ ํก์ํ์.
Thinking in React (React๋ก ์ฌ๊ณ ํ๊ธฐ)
Step 3: Find the minimal but complete representation of UI state
์ต์ํ์ ์์ ํ UI state ์ฐพ๊ธฐ
Step 4: Identify where your state should live
state๊ฐ ์ด๋์ ์์ด์ผ ํ ์ง ํ์ ํ๊ธฐ
Step 5: Add inverse data flow
์ญ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ ์ถ๊ฐํ๊ธฐ
Keyword
React state๋?
DRY ์์น
SSOT(Single Source of Truth)
useState
1๊ธ ๊ฐ์ฒด(first-class object)๋?
Lifting State Up
React์ State
React์ State๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ฌ์ฉ๋๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ค.
State์ ๋ณ๊ฒฝ์ ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ๋ค.
๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ํ์ ์ปดํฌ๋ํธ๋ ๋ฆฌ๋ ๋๋ง๋๋ค.
๋ชจ๋ ๋ฐ์ดํฐ๊ฐ State๊ฐ ๋๋ ๊ฒ์ ์๋๋ค.
DRY ์์น
Don't Repeat Yourself ์์น์ ์ค๋ณต ์ฝ๋๋ฅผ ํผํ๊ณ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ๊ฒ์ ๊ฐ์กฐํ๋ ์ํํธ์จ์ด ๋์์ธ ์์น์ด๋ค.
์ค๋ณต ๋ก์ง์ ํจ์๋ ํด๋์ค๋ฅผ ํ์ฉํด ์ฌ์ฌ์ฉํ๋ค.
React์ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํด ์ฝ๋ ์ค๋ณต์ ์ต์ํํ๋ค.
Custom Hooks๋ฅผ ํ์ฉํด ๊ณตํต ๋ก์ง์ ๋ถ๋ฆฌํ๋ค.
SSOT(Single Source of Truth)
์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์ ๋ชจ๋ ์ํ ์ ๋ณด๋ฅผ ํ๋์ ์์ค์์ ๊ด๋ฆฌํ์๋ ๊ฐ๋
์ฆ, ์ปดํฌ๋ํธ ์ด๊ณณ์ ๊ณณ์์ ์ํ๋ฅผ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ์ง ๋ง๊ณ ํด๋น ์ํ์ ์์กดํ๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ๋ ์์ ์ปดํฌ๋ํธ๊ฐ ์ํ๋ฅผ ๊ด๋ฆฌํ์๋ ์๋ฏธ, ๋๋ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ธ๋ถ Store์์ ๊ด๋ฆฌ
useState
React Hooks์ค ํ๋๋ก ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํจ์
useState ํจ์๋ ๋ฐฐ์ด์ ๋ฐํํ๊ณ ์ฒซ๋ฒ์งธ ์์๋ ํ์ฌ ์ํ ๊ฐ, ๋๋ฒ์งธ๋ ์ํ ์ ๋ฐ์ดํธ ํจ์
initialState๋ ์ํ ์ด๊ธฐ๊ฐ์ด๋ฉฐ, ์ฒซ ๋ ๋๋ง ์์๋ง ์ฌ์ฉ๋๋ค.
setState ํจ์๋ฅผ ํธ์ถํด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ฉด, ๋ณ๊ฒฝ๋ ์ํ๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋๋ค.
1๊ธ ๊ฐ์ฒด(first-class object)
Javascript์์์ ์ผ๊ธ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง ๊ฐ์ฒด๋ค.
ํจ์๋ฅผ ๋ณ์์ ๊ฐ์ผ๋ก ํ ๋นํ ์ ์๋ค. (ex. ํจ์ ํํ์)
ํจ์๋ฅผ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ ์ ์๋ค. (ex. ์ฝ๋ฐฑ ํจ์)
ํจ์๋ฅผ ํจ์์ ๋ฐํ ๊ฐ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. (ex. ํด๋ก์ )
์ผ๊ธ ๊ฐ์ฒด์ ํน์ง์ผ๋ก ์ธํด ์ฝ๋ฐฑ ํจ์, ๊ณ ์ฐจ ํจ์ ๋ฑ์ ๋ค์ํ ํจํด์ ํตํด ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค.
Lifting State Up
SSOP์์ ์ธ๊ธํ ํ๋์ ์์ค์์ ๊ด๋ฆฌํ์๋ ๊ฐ๋ ์ ์ ์ฉํ์ฌ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๋์ผํ ์ํ๋ฅผ ๊ณต์ ํด์ผ ํ ๊ฒฝ์ฐ ๊ณตํต ์ปดํฌ๋ํธ๋ก State๋ฅผ ๋์ด์ฌ๋ฆฌ๋ Lifting State Up ๊ณผ์ ์ด ํ์ํ๋ค.
์์ ์ปดํฌ๋ํธ์์ State๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ์ํ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. (ex. ํน์ ํ์ ์ปดํฌ๋ํธ์์ ํด๋น ์ํ ๊ณต์ ๊ฐ ํ์ํ ๊ฒฝ์ฐ Props๋ก ์ ๋ฌ)
Props Driling์ ์ต์ํ ํ ์ ์๋ค.
State์ ์ค๋ณต์ ์ต์ํ ํ ์ ์๋ค.
Inverse Data Flow
React๋ ๋ฐ์ดํฐ ์ ๋ฌ์ด ๋ถ๋ชจ์์ ์์์ผ๋ก ํ ์ชฝ์ผ๋ก๋ง ํ๋ฅด๋ ๋จ๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ ํน์ฑ์ ๊ฐ์ง๋๋ฐ, ์ญ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ด์ ๋๋น๋๋ ๊ฐ๋ ์ด๋ค. ์์ ์ปดํฌ๋ํธ์์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
Last updated