ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ตณ์ด ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ์ง ์์๋ ๋๋ ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์์์ ๊นจ๋ซ๊ณ ์ ์ญ ์ํ์ ์ง์ญ ์ํ๋ฅผ ๊ณต๋ถํ๋ ์ค ์ ๋ฆฌํ๋ ๊ธ์ ๋๋ค.
์ ์ญ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ํ์ ์ธ ํด๋ก Redux, Redux toolkit์ด ์์ต๋๋ค.
์ ๋ ์ด๋ฒ ํ๋ก์ ํธ์์ Zustand๋ผ๋ ํด๋ก ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ์ต๋๋ค.
์ ๊ฐ ์ฌ์ฉํ Zustand์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์๊ฐํ์๋ฉด, Redux, Redux toolkit, context API ๋ฑ๊ณผ ๋น๊ตํ๋ฉด ์ฌ์ฉํ๊ธฐ ์ ๋ง ์ฝ๊ณ , Provider๋ก ๊ฐ์ธ์ฃผ์ง ์์๋ ๋์ ๋ถํ์ํ ๋ ๋๋ง์ ์ค์ผ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. Zustand ์ฌ์ฉ๋ฒ์ ๋ํด์๋ ๋ค๋ฅธ ํฌ์คํ ์ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
๐ก์ ์ญ ์ํ๋?
๋ฌธ์์ ์ด๋ค ๊ณณ์์๋ ์ ๊ทผํ ์ ์๋ ์์ญ์ ๋งํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ค ์ํ๊ฐ ์ ์ญ์ผ๋ก ๊ด๋ฆฌ๋๊ณ ์๋ค๋ ๊ฒ์ ํด๋น ์ปดํฌ๋ํธ ๋ฟ๋ง ์๋๋ผ ์ธ๋ถ ์ปดํฌ๋ํธ ์ด๋์์๋ ์ง ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๊ณ ์๋ ์ฝ๋ ์ด๋์์๋ ์ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ณํ์ ๋ฐ๋ผ ๋ ๋๋ง์ ์ํฅ์ ์ค์ผํ๋ ๊ฐ
ํ๋ก ํธ์๋์์ ๊ด๋ฆฌํ๋ ์ํ๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ธ๋ถ์์ ๋ฐ๋ ๋์ ์ธ ๋ฐ์ดํฐ (ex. server response)
2. ์ ํ๋ฆฌ์ผ์ด์ UI ์ํ (ex. ๋คํฌ๋ชจ๋, ๋ชจ๋ฌ)
๐ก๋ด๊ฐ ํ๋ก์ ํธ์์ ์ ์ญ ์ํ๋ฅผ ์ฌ์ฉํ ์์
์ ๋ ํ์๊ฐ์ , ๋ก๊ทธ์ธ ํํธ๋ฅผ ๋งก์ผ๋ฉด์ ํน์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ ์ ์ ์ ๊ฒฝ์ฐ ํน์ ํ์ด์ง๋ฅผ ๋ค์ ๋ ๋๋งํ ํ์๊ฐ ์๋๋ก ํด์ผ๋ง ํ์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ์ต์ด ํ์๊ฐ์ ํ ์ ์ ์ ๊ฒฝ์ฐ, ๋ก๊ทธ์ธ ํ ๊ฒฌ์ฃผ ์ธ์ฆ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ํ์ง๋ง, ๊ฒฌ์ฃผ ์ธ์ฆ์ ์๋ฃํ ์ ์ ์ ๊ฒฝ์ฐ, ๊ทธ ์ ์ ๊ฐ ๋ค์ ๋ก๊ทธ์ธํ๋๋ผ๋ ๊ฒฌ์ฃผ ์ธ์ฆ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ์๋ฉ๋๋ค.
์ด๋ฅผ ์ํด์ ๋ก๊ทธ์ธ ํ (ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ํ) ํ์์ ๋ณด๋ฅผ ํธ์ถํ์ฌ ํด๋น ์ ์ ์ ๋๋ค์๊ณผ ๊ฒฌ์ฃผ์ธ์ฆ ์ ๋ฌด๋ฅผ ํ์ธํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํธ์ถํ ๋๋ค์์ ๊ฒฝ์ฐ์๋ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๋ง์ดํ์ด์ง์์ ๋ค์ ํธ์ถํ ํ์์์ด store์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ฐ๊ธฐ๋ง ํ์ต๋๋ค.
๐ก์ ์ญ ์ํ๋ฅผ ์ฐ๋ ์ด์ ?!
์ํ๋ฅผ ์ ์ญ์ผ๋ก ์ฐ์ง ์๋๋ค๋ฉด?
1. ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ๋ค.
2. ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ ์ปดํฌ๋ํธ์ state๋ก ์ ์ํ๋ค.
3. ์ด state๋ฅผ ํ์ํ ์ปดํฌ๋ํธ๋ก props๋ก ์ ๋ฌํ๋ค.
๐ ์ํ๋ฅผ ๊ตณ์ด ์ฌ์ฉํ์ง ์์๋ ๋๋ ๊ณณ์ด๋๋ผ๋ props๋ก ์ ๋ฌํด์ผํ ์๋ ์๋ค.
์ํ๋ฅผ ์ ์ญ์ผ๋ก ์ด๋ค๋ฉด?
1. ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ๋ค.
2. ๋ฐ์ดํฐ๋ฅผ ์ ์ญ์ผ๋ก ์ ์ฅํ๋ค.
3. ์ํ๊ด๋ฆฌ store์ ์ ๊ทผํ์ฌ ์ํ๋ ๊ฐ์ ๊ฐ์ ธ์์ ์ฐ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๐ ์ปดํฌ๋ํธ์ ๊ตฌ์กฐ ๋ณ๊ฒฝ์๋ ์์ ๋ก์์ง๊ณ ์ฝ๋๊ฐ ํจ์ฌ ๊น๋ํด์ง๋ค.
โ ๏ธ ๋ถํ์ํ ๋คํธ์ํฌ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํด ํ์ํ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ , ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค๋ฉด ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ์! โ ๏ธ
์ด๊ฑธ ๋ค์ ์๊ฐํด๋ณด์!
Redux์์ ์๋ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉด ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ์์ ์ ๋ฐ์ดํฐ๊ฐ ์์์ ๋ณด์ฅํ ์ ์๊ฒ ๋๋ค.
๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์ปค์ง์๋ก ๋ฐ์ดํฐ์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๊ธฐ ํ๋ค๊ฒ ๋๋ค.
์ ๋ฆฌ
=> ๊ฐ๋ฐ์๋ง๋ค api ํธ์ถํ ๋ฐ์ดํฐ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํด์ผํ๋์ง์ ๋ํ ๊ฒฌํด๋ ๋ค๋ฅด๋ค.
๋ด๊ฐ ์๊ฐํ๊ธฐ์๋ ๊ตณ์ด ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ์ง ์์๋ ๋๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ์ง์ญ์ ์ผ๋ก๋ง ์ํ๋ฅผ ๊ด๋ฆฌํด๋ ์ถฉ๋ถํ๊ธฐ์ ๊ตฌ๋ถํด์ ์ฌ์ฉํด๋ณด์!
์ฐธ๊ณ ์๋ฃ)
https://jbee.io/react/thinking-about-global-state/
https://www.reddit.com/r/reactjs/comments/k6m35q/when_should_you_store_data_in_global_state_eg/
๐ ์๋ชป๋ ๊ฐ๋ ์ ๋ฌ์ด ์๋ค๋ฉด ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. ์ ์ ์ฑ์ฅ์ ํฐ ๋์์ด ๋ฉ๋๋ค๐ค
'๐ฅFrontEnd > Redux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
NEVER MUTATE REDUX!! (0) | 2022.08.13 |
---|---|
Redux Toolkit ์ฌ์ฉ๋ฐฉ๋ฒ (0) | 2022.07.28 |
๋ฆฌ๋์ค์์ ๊ฐ์ฅ ์ค์ํ ์ , ๊ธฐ์กด์ state๋ฅผ ๋ณ๊ฒฝํด์๋ ์๋๋ ์ด์ ! (0) | 2022.07.11 |
์ฝ๋๋ก ๋ณด๋ ๋ฆฌ๋์ค ๊ธฐ์ด (0) | 2022.07.10 |
TIL) REDUX, redux ๊ธฐ์ด, ๋ฆฌ๋์ค ๊ตฌ์กฐ, Redux์ ์ธ ๊ฐ์ง ์์น (0) | 2022.07.06 |