๐ Javascript application๋ค์ state(์ํ)๋ฅผ ๊ด๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
๐ React์ ๋ง์ด ์ฌ์ฉํ๋ฉด์ ์ ๋ช ํด์ก์ผ๋, React์ ์์กดํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋.
๐ Angular, Vue.js, VanillaJS ๋ฑ JavaScript ์ธ์ด ๋ด ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉ ๊ฐ๋ฅ
๋ฆฌ๋์ค๋, "์ค์ state ๊ด๋ฆฌ์" ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ด๋ค.
๋ฆฌ๋์ค๋ฅผ "์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ" ๋ผ๊ณ ์ฃผ๋ก ํํํ๋ค.
์ ์ญ ์ํ (global state) ๋ฅผ ์ ๊ด๋ฆฌํ๋๋ก ๋์์ฃผ๋ ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ค ์ปดํฌ๋ํธ์์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก ์์ฑํ state๋ฅผ ๋ณด๋ด๊ณ ์ ํ ๋ props๋ฅผ ํตํด ๊ทธ ๊ฐ์ ๋ณด๋ด์ฃผ์๋ค. ๊ทธ๋ฌ๋ props๋ก state๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์๋ ๋ฐฉ๋ฒ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ถํธํ ์ ์ด ์๋ค.
- ์ปดํฌ๋ํธ์์ ์ปดํฌ๋ํธ๋ก state๋ฅผ ๋ณด๋ด๊ธฐ ์ํด์๋ ๋ฐ๋์ ๋ถ๋ชจ-์์ ๊ด๊ณ
- A ์ปดํฌ๋ํธ์์ C ์ปดํฌ๋ํธ๋ก ๊ฐ์ ๋ณด๋ผ ๋ ๋ฐ๋์ B ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค. (A-B ๋ถ๋ชจ ์์๊ด๊ณ, B-C ๋ถ๋ชจ ์์๊ด๊ณ) => prop drilling
- ์์ ์ปดํฌ๋ํธ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ๊ฐ์ ๋ณด๋ผ ์ ์๋ค.
Redux๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ถํธํจ์ ํด๊ฒฐํ ์ ์๋ค.
์ค์ state ๊ด๋ฆฌ์์์ state๋ฅผ ์์ฑํ๊ณ , ์ด๋ค ์ปดํฌ๋ํธ์์ state๊ฐ ํ์ํ๋ค๋ฉด, ์ปดํฌ๋ํธ์ ์์น์ ์๊ด ์์ด (๋ถ๋ชจ ์์ ๊ด๊ณ์ ์๊ด ์์ด) state๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ ๊ฒ ํน์ ์ปดํฌ๋ํธ์ ์ข
์๋์ด ์๋ ๊ฒ์ด ์๋, ์ค์ state ๊ด๋ฆฌ์์์ ์์ฑ๋ state๋ฅผ Global state ๋ผ๊ณ ํ๊ณ , ์ด๋ฌํ ๊ฐ๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ๊ณ ํํํ๋ค.
์ ๋ฆฌ
- Redux๋ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ค.
- Redux๋ useState๋ฅผ ํตํด ์ํ๋ฅผ ๊ด๋ฆฌํ์ ๋ ๋ฐ์ํ๋ ๋ถํธํจ์ ํด์ํ๋ค.
- Redux๋ ์ค์ state ๊ด๋ฆฌ์๋ฅผ ๊ฐ๊ณ ์๊ณ , ๋ชจ๋ state๋ ์ด ๊ณณ์์ ์์ฑ๋๋ค.
- useState๋ก ์์ฑํ state๋ Local State์ด๊ณ , Redux์์ ์์ฑํ state๋ Global state์ด๋ค.