์ด๋ฒ ์ฃผ ๋ด๊ฐ ๊ตฌํํ ๊ธฐ๋ฅ์ ?
์ด๋ฒ์ฃผ์ ๋๋์ด ํ๋ก์ ํธ์ฃผ์ฐจ๊ฐ ์์๋์๋ค.
์ด๋ฒ์ฃผ์ ํด์ผํ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 1์ฃผ์ฐจ
- ํ๊ฒฝ ์ธํ ๋ฐ ์์ด์ด ํ๋ ์, ์ ์ ํ๋ก์ฐ ์์
- ํ์ด์ง ๋ผ์ฐํ ์ค๊ณ
- ๋ก๊ทธ์ธ/ํ์๊ฐ์ /์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ
- ์ปดํฌ๋ํธ ๋ฐ ๋ผ์ฐํธ์ ์ง์ฐ ๋ก๋ฉ
์ฝ 2.5์ผ์ ๋๊ฐ ์์ด์ดํ๋ ์๊ณผ ์ ์ ํ๋ก์ฐ๋ฅผ ๋ง๋ค๊ณ , github commit, issue, PR ์ธํ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ผ์ฐํ ์ ์ค๊ณํ๋๋ฐ ์ฝ 3์ผ์ ๋ ๊ฑธ๋ฆฐ๊ฒ ๊ฐ๋ค. 4์ผ์ฐจ๋ถํฐ firebase๋ฅผ ์ด์ฉํ ์ด๋ฉ์ผ ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ์๋ค. ์ผ๋จ ๋ฉํ ๋๊ป ์ง๋ฌธ๋ ๋๋ฆฌ๊ธฐ ์ํด ๊ธฐ๋ฅ์ ๋จผ์ ๊ตฌํํ๊ฒ ๋์๋๋ฐ, ์์ง ์ต์์น ์๊ธฐ๋ ํ๊ณ , firebase๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ค๋ณด๋ ๋ฌธ์๋ณด๋ฉด์ ํ ์คํธํด๋ณด๋ฉด์ ์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ api๋ค์ ๋ค ์ปดํฌ๋ํธ ์์์ ์์ฑํ๋ค๊ฐ ์ ๋ง๋ค ํ๊ณ ๋ค์ ๋ api๋ค๋ง ๋ถ๋ฆฌํ๊ณ .. ๋ฆฌํฉํ ๋งํ๋๋ฐ ์๊ฐ์ด ๊ฝค๋๊ฑธ๋ฆฐ๊ฒ ๊ฐ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก ์ด๋ ต๋ค๊ณ ์๊ฐํ๋ auth๋ถ๋ถ์ด๋ผ ๊ฑฑ์ ์ ํ๋๋ฐ, ์๊ฐ๋ณด๋ค ํฐ ๋ฌธ์ ์์ด ๊ตฌํํ ์ ์์๋ ๊ฒ ๊ฐ๋ค!
ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด, ์ด๋ค ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ์ ๊ฑฐ์ณค๋์ง?
์ด๋ฒ์ฃผ์ ์งํํ ํ์๊ฐ์ , ๋ก๊ทธ์ธ์ ํ๋ฉด firebase์์ ์ ์ ์ ๋ณด๋ฅผ ๋ฆฌํดํด์ฃผ๋๋ฐ, ์ด๋ฅผ ํ์ฉํด ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํด์ ๋ก๊ทธ์ธ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์์ ๋ค์ ์ํํ ์ ์๋ค. ๋ณดํต ์ด์ ํ๋ก์ ํธ์์๋, ๊ธฐ๊ณ์ ์ผ๋ก context๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ์๋๋ฐ, ์ด๋ฒ์ ์ ๋๋ก ์๊ณ ๋์ด๊ฐ๊ณ ์ถ์ด์ ๋์ ์ฅ๋จ์ ์ ๋น๊ตํ๊ณ 1:1 ๋ฉํ ๋ง๋ ์๊ฒฌ์ ์ฌ์ญค๋ณด์๋ค.
context๊ฐ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ ํ ์์๋ค๊ณ ์๊ณ ๋ ์์ง๋ง, ์๋ฒฝํ๊ฒ ๋งํ ์์์์ ๋๋ก ์ด๋๊ฒฝ์ฐ์ ๋ถํ์ํ ๋ ๋๋ง์ด ์ผ์ด๋๋์ง ์ผ๋จ ์ ์์งํ์ง ๋ชปํ๊ณ ์์๋ค. context๊ฐ ๊ฐ์ฒด๋ผ๋ฉด, ๊ฐ์ฒด์ ์ผ๋ถ ํ๋กํผํฐ๋ง ๋ณ๊ฒฝ๋์ด๋ ํด๋น context๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ ๋ชจ๋ consumer๊ฐ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ.
๊ทธ๋์ zustand๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊น? ์๊ฐํ๊ณ ์์๋ค.
๋ฉํ ๋๊ป ์ฌ์ญค๋ณด๋, zustand๋ ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋๊ฐ์ด ์ํ ๊ฐ์ฒด์ ์ผ๋ถ๋ง ๋ณ๊ฒฝ๋์ด๋ ๊ทธ ์ํ๋ฅผ ๊ตฌ๋ ํ๊ณ ์๋ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ค๋ ๊ฒ. ์ด๋ฅผ ์ํด, ๋์ ์ ํ์ ๊ตฌ๋ ์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ํ์ํ ์ํ์ ๋ถ๋ถ๋ง ๊ตฌ๋ ํ๋๋ก ์ค์ ํ๋ฉด, ํด๋น ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋ ๋๋ง ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋๋ก ํ ์ ์์ง๋ง, ๊ท๋ชจ๊ฐ ์์์ ๋ฑํ ๋ง์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋์ง ์์๊ฒ ๊ฐ์ผ๋ ๊ตณ์ด ๊ทธ๋ดํ์๊น์ง๋ ์์๊ฒ ๊ฐ๋ค๋ ์๊ฒฌ์ด์๋ค. ๊ทธ๋์ ์ผ๊ด์ฑ๊ณผ ์ ํธ๋๋ฅผ ํตํด zustand๋ก ๊ฒฐ์ ํ๊ฒ ๋์๋ค.
์ด๋ฒ ์ฃผ ๊ฒช์ ํธ๋ฌ๋ธ ์ํ ์ด ์๋ค๋ฉด?
๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์ญ์ํ๋ก ๋ด๊ณ ์๋๋ฐ, ์๋ก๊ณ ์นจ์ ํ๋ฉด js๊ฐ ์ด๊ธฐํ๋๋ฉด์ zustand ์คํ ์ด๊ฐ ์ด๊ธฐํ๋๋ฉด์ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํ๋๊ฒ ์๋๊ฐ๋ผ๋ ์๊ฐ์ zustand์ persist ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ localStorage์ ๋ด์ ์ด ๋ก๊ทธ์ธ ์ํ(์ ์ ์ ๋ณด ์กด์ฌ ์ฌ๋ถ)๋ฅผ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํด๋ ๋ฌธ์ ์์ด ๋์ํ ์ ์๋๋ก ํด์ผํ๋ ํ์ง๋ง, firebase ์ธ์ฆ ์์คํ ์ด ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด, ์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ๊ณ ์ด ์ธ์ฆํ ํฐ์ ์๊ฐ์ด ์ฝ 1์๊ฐ ์ ๋์ด๊ธฐ ๋๋ฌธ์, ์ด ํ ํฐ์ด ๋ง๋ฃ๋๊ฑฐ๋ ๊ฐฑ์ ์ ์คํจํ๋ฉด ๋ก์ปฌ์คํ ๋ฆฌ์ง์๋ ๋ก๊ทธ์ธ์ํ์ด์ง๋ง, ์ค์ง์ ์ผ๋ก ๋ก๊ทธ์์ ์ํ๊ฐ ๋ ์ ์๋ค๊ณ ํ๋ค. ๋ํ ๊ธฐ๋ณธ์ ์ผ๋ก firebase์์ ์์ฒด์ ์ผ๋ก ์ธ์ฆ ์ํ๋ฅผ ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ค๊ณ ๊ตณ์ด ๋ persist๋ฅผ ์ฌ์ฉํด ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ๋ฃ์ ํ์๊ฐ ์๊ณ , onAuthStateChanged ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ธ์ฆ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํด์ ๋ก๊ทธ์ธ์ํ๋ฅผ ์๋ก๊ณ ์นจํด๋ ๋ฌธ์ ์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ๊ตฌํํด๋ณด๋ ๋ ํ๋์ ๋ฌธ์ ๊ฐ ์๋ค. protectedRoute๋ฅผ ํตํด ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ์๋๋ฉด ์๋น์ค ์ ๊ทผ์ ์ ํํ๊ณ ์๋๋ฐ, protectRoute๋ ํ์ฌ ์คํ ์ด์ ์ ์ฅ๋ user์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ณด๋, ๋ก๊ทธ์ธํ ์ ์ ๊ฐ URL๋ก ์ง์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์คํ ์ด์ ์๋ก๊ณ ์นจ์ ์ํด user์ ๋ณด๊ฐ ์ด๊ธฐํ ๋๋ฉด์ ์ ๊ทผ๊ถํ์ด ์์ง๋ง ์ ๊ทผ์ ํ ์ ์๋ค.
onAuthStateChanged๋ฅผ ํ์ฌ๋ ํค๋์์๋ง ์ฌ์ฉํ๊ณ ์์๋๋ฐ. ์ด๋ฅผ protectedRoute์์๋ ํด์ผํ๋? ์๊ฐ์ ํ๊ณ ์๊ธดํ๋ฐ ์์ง ๋ค๋ฅธ ์์ ์ ํ๋๋ผ ํด๊ฒฐํ์ง ๋ชปํ๋ค.
์ผ๋ฅธ ํ๋์ฉ ํด๊ฒฐํด๋๊ฐ์!
์ด๋ฒ ์ฃผ ์งํ๋ ๊ฐ์ธ ํ๋ก์ ํธ์์ ์ป์ ์ธ์ฌ์ดํธ๋?
์ฒ์์ ์ด๋ฒ์ฃผ์ ์ง์ฐ๋ก๋ฉ ๊ฐ์ ์ถ๊ฐ ๊ตฌํ์ฌํญ๊น์ง ๋ชจ๋ ํ๊ณ ์ถ์ ์์ฌ์ ๋นจ๋ฆฌ ๊ฐ๋ฐ์ ์์ํด์ผ๋๋๊ฒ ๊ฐ์ ์๋ฐ๊ฐ์ ์ ๋ ์ ๋ชป์๊ณ ๋จธ๋ฆฌ๋ ๋๋ฌด ์ํ ๋ค ๐ฃ
์์ ์ ํ๋ก์ ํธ ํ๋ฉด์๋ ๋๊ผ๋ ์ ์ธ๋ฐ ์๊ฐ์ ์ซ๊ฒจ ๊ธฐ๋ฅ๊ตฌํ์๋ง ๊ธ๊ธํด์ ์ ์ ์ ์ด๋ ๊ฒ ํด์ผํ๋์ง ์์ฌ๊ฒฐ์ ์ ์ํํด์ง๊ณ , ๊ทธ๋ฅ ๋์ํ๋๊ฒ์๋ง ๋๋ฌด ์ ๊ฒฝ์ฐ๋ค๋ณด๋ ๋ฑํ ํ๋ก์ ํธ์ ๋ํด ๋งํ ๊ฒ๋ ํธ๋ฌ๋ธ์ํ ๋ ์์๋๊ฒ ๊ฐ๋ค. ์ด๋ ฅ์ ์ฐ๋ฉด์ ์ ๋ง ๋๊ผ๋ค ....
์ด๋ฒ ํ๋ก์ ํธ ์ฃผ์ฐจ๋๋ ๊ท๋ชจ๊ฐ ์๋๋ผ๋ ํ์คํ ์๊ณ , ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์งฐ๋์ง ๋ฌผ์ด๋ณด๋ฉด ํ์คํ๊ฒ ๋๋ตํ ์ ์๊ธธ ๋ฐ๋ฌ๊ณ , ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ๊ณผ ํธ๋ฌ๋ธ์ํ ์ด๋ผ๊ณ ํ ๋งํ ๊ฒ๋ค์ ๋ง์ด ๊ฒช์ด๋ณด๊ณ ์ถ์๋ค. ์ฑ๋ฅ๊ฐ์ ๋!
์ด๋ฅผ ์ํด์ , ์์ ์ฒ๋ผ ๋ง์๋ง ์กฐ๊ธํด์ ๊ทธ๋ฅ ๋์ด๊ฐ๊ณ , ์ํํด์ง๊ณ , ๋นจ๋ฆฌ๋นจ๋ฆฌ๋ฅผ ์ธ์ณ์๋ ์๋๊ฒ ๋ค๊ณ ๋ค์งํ๋ฉฐ ํ๋ฃจ์๋ ๋ช๋ฒ์ฉ ์ง๊ธ ๋ชปํด๋ ๊ด์ฐฎ๋ค๊ณ ๋๋ค๊ณ ๋ง์๋ค์ง์ ํ๋๋ ๊ณํ๋ณด๋ค ์กฐ๊ธ ๋ฆ์ด์ ธ๋ ์กฐ๊ธํดํ์ง ์๊ณ ๋ถ์ํดํ์ง ์๋๊ฒ ๊ฐ๋ค.
์ด๋ด๋ ํญ์ ๋นจ๋ฆฌ๋นจ๋ฆฌ๋ฅผ ์ธ์น๋ ๊ธํ ๋ด ์ฑ๊ฒฉ์ด ์ซ๊ธฐ๋ํ๋ค๐พ
๋๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ๋ง๊ณ , ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฌผ๋ ๊ฒฐ๊ณผ๋ฌผ์ด์ง๋ง, ๋ง์ธ๋์ ์ ์ป์ด๊ฐ๊ณ ์ถ๋ค.
์ ํ ์ ์์๊ฒ์ด๋ผ ๋ฏฟ๋๋ค ๐
ํญํด ๊ฐ๋ฐ์ ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค๋ฅผ ์๊ฐํ๊ณ ์์ฑํ ์ฝํ ์ธ ์ ๋๋ค.
https://hanghae99.spartacodingclub.kr/reboot
IT ์ปค๋ฆฌ์ด ์ฑ์ฅ ์ฝ์ค ํญํด99, ๊ฐ๋ฐ์ ์ทจ์ ๋ถํฐ ํ์ง์ ์ฝ์ค๊น์ง
ํญํด99๋ ์ค๋ฌด์ ์ง์คํฉ๋๋ค. ์ต๋จ๊ธฐ๊ฐ์ ๊ฐ๋ฐ์๋ก ์ทจ์ ํ๊ณ , ํ์ง์ ์ฝ์ค๋ก ํญ๋ฐ ์ฑ์ฅ์ ์ด์ด๊ฐ์ธ์. ์ค์ ํ๋ก์ ํธ, ํฌํธํด๋ฆฌ์ค ๋ฉํ ๋ง, ๋ชจ์ ๋ฉด์ ๊น์ง.
hanghae99.spartacodingclub.kr
'โ๏ธ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉ๋ฅ์ํ ํ๋ก์ ํธ : 2์ฃผ์ฐจ ํ๊ณ (0) | 2024.07.01 |
---|---|
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 6์ผ์ฐจ TIL (0) | 2024.06.18 |
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 5์ผ์ฐจ TIL (0) | 2024.06.17 |
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 4์ผ์ฐจ TIL (0) | 2024.06.15 |
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 3์ผ์ฐจ TIL (0) | 2024.06.14 |
์ด๋ฒ ์ฃผ ๋ด๊ฐ ๊ตฌํํ ๊ธฐ๋ฅ์ ?
์ด๋ฒ์ฃผ์ ๋๋์ด ํ๋ก์ ํธ์ฃผ์ฐจ๊ฐ ์์๋์๋ค.
์ด๋ฒ์ฃผ์ ํด์ผํ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 1์ฃผ์ฐจ
- ํ๊ฒฝ ์ธํ ๋ฐ ์์ด์ด ํ๋ ์, ์ ์ ํ๋ก์ฐ ์์
- ํ์ด์ง ๋ผ์ฐํ ์ค๊ณ
- ๋ก๊ทธ์ธ/ํ์๊ฐ์ /์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ
- ์ปดํฌ๋ํธ ๋ฐ ๋ผ์ฐํธ์ ์ง์ฐ ๋ก๋ฉ
์ฝ 2.5์ผ์ ๋๊ฐ ์์ด์ดํ๋ ์๊ณผ ์ ์ ํ๋ก์ฐ๋ฅผ ๋ง๋ค๊ณ , github commit, issue, PR ์ธํ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ผ์ฐํ ์ ์ค๊ณํ๋๋ฐ ์ฝ 3์ผ์ ๋ ๊ฑธ๋ฆฐ๊ฒ ๊ฐ๋ค. 4์ผ์ฐจ๋ถํฐ firebase๋ฅผ ์ด์ฉํ ์ด๋ฉ์ผ ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ์๋ค. ์ผ๋จ ๋ฉํ ๋๊ป ์ง๋ฌธ๋ ๋๋ฆฌ๊ธฐ ์ํด ๊ธฐ๋ฅ์ ๋จผ์ ๊ตฌํํ๊ฒ ๋์๋๋ฐ, ์์ง ์ต์์น ์๊ธฐ๋ ํ๊ณ , firebase๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ค๋ณด๋ ๋ฌธ์๋ณด๋ฉด์ ํ ์คํธํด๋ณด๋ฉด์ ์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ api๋ค์ ๋ค ์ปดํฌ๋ํธ ์์์ ์์ฑํ๋ค๊ฐ ์ ๋ง๋ค ํ๊ณ ๋ค์ ๋ api๋ค๋ง ๋ถ๋ฆฌํ๊ณ .. ๋ฆฌํฉํ ๋งํ๋๋ฐ ์๊ฐ์ด ๊ฝค๋๊ฑธ๋ฆฐ๊ฒ ๊ฐ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก ์ด๋ ต๋ค๊ณ ์๊ฐํ๋ auth๋ถ๋ถ์ด๋ผ ๊ฑฑ์ ์ ํ๋๋ฐ, ์๊ฐ๋ณด๋ค ํฐ ๋ฌธ์ ์์ด ๊ตฌํํ ์ ์์๋ ๊ฒ ๊ฐ๋ค!
ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด, ์ด๋ค ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ์ ๊ฑฐ์ณค๋์ง?
์ด๋ฒ์ฃผ์ ์งํํ ํ์๊ฐ์ , ๋ก๊ทธ์ธ์ ํ๋ฉด firebase์์ ์ ์ ์ ๋ณด๋ฅผ ๋ฆฌํดํด์ฃผ๋๋ฐ, ์ด๋ฅผ ํ์ฉํด ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํด์ ๋ก๊ทธ์ธ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์์ ๋ค์ ์ํํ ์ ์๋ค. ๋ณดํต ์ด์ ํ๋ก์ ํธ์์๋, ๊ธฐ๊ณ์ ์ผ๋ก context๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ์๋๋ฐ, ์ด๋ฒ์ ์ ๋๋ก ์๊ณ ๋์ด๊ฐ๊ณ ์ถ์ด์ ๋์ ์ฅ๋จ์ ์ ๋น๊ตํ๊ณ 1:1 ๋ฉํ ๋ง๋ ์๊ฒฌ์ ์ฌ์ญค๋ณด์๋ค.
context๊ฐ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ ํ ์์๋ค๊ณ ์๊ณ ๋ ์์ง๋ง, ์๋ฒฝํ๊ฒ ๋งํ ์์์์ ๋๋ก ์ด๋๊ฒฝ์ฐ์ ๋ถํ์ํ ๋ ๋๋ง์ด ์ผ์ด๋๋์ง ์ผ๋จ ์ ์์งํ์ง ๋ชปํ๊ณ ์์๋ค. context๊ฐ ๊ฐ์ฒด๋ผ๋ฉด, ๊ฐ์ฒด์ ์ผ๋ถ ํ๋กํผํฐ๋ง ๋ณ๊ฒฝ๋์ด๋ ํด๋น context๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ ๋ชจ๋ consumer๊ฐ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ.
๊ทธ๋์ zustand๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊น? ์๊ฐํ๊ณ ์์๋ค.
๋ฉํ ๋๊ป ์ฌ์ญค๋ณด๋, zustand๋ ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋๊ฐ์ด ์ํ ๊ฐ์ฒด์ ์ผ๋ถ๋ง ๋ณ๊ฒฝ๋์ด๋ ๊ทธ ์ํ๋ฅผ ๊ตฌ๋ ํ๊ณ ์๋ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ค๋ ๊ฒ. ์ด๋ฅผ ์ํด, ๋์ ์ ํ์ ๊ตฌ๋ ์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ํ์ํ ์ํ์ ๋ถ๋ถ๋ง ๊ตฌ๋ ํ๋๋ก ์ค์ ํ๋ฉด, ํด๋น ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋ ๋๋ง ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๋๋ก ํ ์ ์์ง๋ง, ๊ท๋ชจ๊ฐ ์์์ ๋ฑํ ๋ง์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋์ง ์์๊ฒ ๊ฐ์ผ๋ ๊ตณ์ด ๊ทธ๋ดํ์๊น์ง๋ ์์๊ฒ ๊ฐ๋ค๋ ์๊ฒฌ์ด์๋ค. ๊ทธ๋์ ์ผ๊ด์ฑ๊ณผ ์ ํธ๋๋ฅผ ํตํด zustand๋ก ๊ฒฐ์ ํ๊ฒ ๋์๋ค.
์ด๋ฒ ์ฃผ ๊ฒช์ ํธ๋ฌ๋ธ ์ํ ์ด ์๋ค๋ฉด?
๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์ญ์ํ๋ก ๋ด๊ณ ์๋๋ฐ, ์๋ก๊ณ ์นจ์ ํ๋ฉด js๊ฐ ์ด๊ธฐํ๋๋ฉด์ zustand ์คํ ์ด๊ฐ ์ด๊ธฐํ๋๋ฉด์ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํ๋๊ฒ ์๋๊ฐ๋ผ๋ ์๊ฐ์ zustand์ persist ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ localStorage์ ๋ด์ ์ด ๋ก๊ทธ์ธ ์ํ(์ ์ ์ ๋ณด ์กด์ฌ ์ฌ๋ถ)๋ฅผ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํด๋ ๋ฌธ์ ์์ด ๋์ํ ์ ์๋๋ก ํด์ผํ๋ ํ์ง๋ง, firebase ์ธ์ฆ ์์คํ ์ด ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด, ์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ๊ณ ์ด ์ธ์ฆํ ํฐ์ ์๊ฐ์ด ์ฝ 1์๊ฐ ์ ๋์ด๊ธฐ ๋๋ฌธ์, ์ด ํ ํฐ์ด ๋ง๋ฃ๋๊ฑฐ๋ ๊ฐฑ์ ์ ์คํจํ๋ฉด ๋ก์ปฌ์คํ ๋ฆฌ์ง์๋ ๋ก๊ทธ์ธ์ํ์ด์ง๋ง, ์ค์ง์ ์ผ๋ก ๋ก๊ทธ์์ ์ํ๊ฐ ๋ ์ ์๋ค๊ณ ํ๋ค. ๋ํ ๊ธฐ๋ณธ์ ์ผ๋ก firebase์์ ์์ฒด์ ์ผ๋ก ์ธ์ฆ ์ํ๋ฅผ ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ค๊ณ ๊ตณ์ด ๋ persist๋ฅผ ์ฌ์ฉํด ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ๋ฃ์ ํ์๊ฐ ์๊ณ , onAuthStateChanged ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ธ์ฆ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํด์ ๋ก๊ทธ์ธ์ํ๋ฅผ ์๋ก๊ณ ์นจํด๋ ๋ฌธ์ ์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ๊ตฌํํด๋ณด๋ ๋ ํ๋์ ๋ฌธ์ ๊ฐ ์๋ค. protectedRoute๋ฅผ ํตํด ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ์๋๋ฉด ์๋น์ค ์ ๊ทผ์ ์ ํํ๊ณ ์๋๋ฐ, protectRoute๋ ํ์ฌ ์คํ ์ด์ ์ ์ฅ๋ user์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ณด๋, ๋ก๊ทธ์ธํ ์ ์ ๊ฐ URL๋ก ์ง์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์คํ ์ด์ ์๋ก๊ณ ์นจ์ ์ํด user์ ๋ณด๊ฐ ์ด๊ธฐํ ๋๋ฉด์ ์ ๊ทผ๊ถํ์ด ์์ง๋ง ์ ๊ทผ์ ํ ์ ์๋ค.
onAuthStateChanged๋ฅผ ํ์ฌ๋ ํค๋์์๋ง ์ฌ์ฉํ๊ณ ์์๋๋ฐ. ์ด๋ฅผ protectedRoute์์๋ ํด์ผํ๋? ์๊ฐ์ ํ๊ณ ์๊ธดํ๋ฐ ์์ง ๋ค๋ฅธ ์์ ์ ํ๋๋ผ ํด๊ฒฐํ์ง ๋ชปํ๋ค.
์ผ๋ฅธ ํ๋์ฉ ํด๊ฒฐํด๋๊ฐ์!
์ด๋ฒ ์ฃผ ์งํ๋ ๊ฐ์ธ ํ๋ก์ ํธ์์ ์ป์ ์ธ์ฌ์ดํธ๋?
์ฒ์์ ์ด๋ฒ์ฃผ์ ์ง์ฐ๋ก๋ฉ ๊ฐ์ ์ถ๊ฐ ๊ตฌํ์ฌํญ๊น์ง ๋ชจ๋ ํ๊ณ ์ถ์ ์์ฌ์ ๋นจ๋ฆฌ ๊ฐ๋ฐ์ ์์ํด์ผ๋๋๊ฒ ๊ฐ์ ์๋ฐ๊ฐ์ ์ ๋ ์ ๋ชป์๊ณ ๋จธ๋ฆฌ๋ ๋๋ฌด ์ํ ๋ค ๐ฃ
์์ ์ ํ๋ก์ ํธ ํ๋ฉด์๋ ๋๊ผ๋ ์ ์ธ๋ฐ ์๊ฐ์ ์ซ๊ฒจ ๊ธฐ๋ฅ๊ตฌํ์๋ง ๊ธ๊ธํด์ ์ ์ ์ ์ด๋ ๊ฒ ํด์ผํ๋์ง ์์ฌ๊ฒฐ์ ์ ์ํํด์ง๊ณ , ๊ทธ๋ฅ ๋์ํ๋๊ฒ์๋ง ๋๋ฌด ์ ๊ฒฝ์ฐ๋ค๋ณด๋ ๋ฑํ ํ๋ก์ ํธ์ ๋ํด ๋งํ ๊ฒ๋ ํธ๋ฌ๋ธ์ํ ๋ ์์๋๊ฒ ๊ฐ๋ค. ์ด๋ ฅ์ ์ฐ๋ฉด์ ์ ๋ง ๋๊ผ๋ค ....
์ด๋ฒ ํ๋ก์ ํธ ์ฃผ์ฐจ๋๋ ๊ท๋ชจ๊ฐ ์๋๋ผ๋ ํ์คํ ์๊ณ , ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์งฐ๋์ง ๋ฌผ์ด๋ณด๋ฉด ํ์คํ๊ฒ ๋๋ตํ ์ ์๊ธธ ๋ฐ๋ฌ๊ณ , ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ๊ณผ ํธ๋ฌ๋ธ์ํ ์ด๋ผ๊ณ ํ ๋งํ ๊ฒ๋ค์ ๋ง์ด ๊ฒช์ด๋ณด๊ณ ์ถ์๋ค. ์ฑ๋ฅ๊ฐ์ ๋!
์ด๋ฅผ ์ํด์ , ์์ ์ฒ๋ผ ๋ง์๋ง ์กฐ๊ธํด์ ๊ทธ๋ฅ ๋์ด๊ฐ๊ณ , ์ํํด์ง๊ณ , ๋นจ๋ฆฌ๋นจ๋ฆฌ๋ฅผ ์ธ์ณ์๋ ์๋๊ฒ ๋ค๊ณ ๋ค์งํ๋ฉฐ ํ๋ฃจ์๋ ๋ช๋ฒ์ฉ ์ง๊ธ ๋ชปํด๋ ๊ด์ฐฎ๋ค๊ณ ๋๋ค๊ณ ๋ง์๋ค์ง์ ํ๋๋ ๊ณํ๋ณด๋ค ์กฐ๊ธ ๋ฆ์ด์ ธ๋ ์กฐ๊ธํดํ์ง ์๊ณ ๋ถ์ํดํ์ง ์๋๊ฒ ๊ฐ๋ค.
์ด๋ด๋ ํญ์ ๋นจ๋ฆฌ๋นจ๋ฆฌ๋ฅผ ์ธ์น๋ ๊ธํ ๋ด ์ฑ๊ฒฉ์ด ์ซ๊ธฐ๋ํ๋ค๐พ
๋๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ๋ง๊ณ , ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฌผ๋ ๊ฒฐ๊ณผ๋ฌผ์ด์ง๋ง, ๋ง์ธ๋์ ์ ์ป์ด๊ฐ๊ณ ์ถ๋ค.
์ ํ ์ ์์๊ฒ์ด๋ผ ๋ฏฟ๋๋ค ๐
ํญํด ๊ฐ๋ฐ์ ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค๋ฅผ ์๊ฐํ๊ณ ์์ฑํ ์ฝํ ์ธ ์ ๋๋ค.
https://hanghae99.spartacodingclub.kr/reboot
IT ์ปค๋ฆฌ์ด ์ฑ์ฅ ์ฝ์ค ํญํด99, ๊ฐ๋ฐ์ ์ทจ์ ๋ถํฐ ํ์ง์ ์ฝ์ค๊น์ง
ํญํด99๋ ์ค๋ฌด์ ์ง์คํฉ๋๋ค. ์ต๋จ๊ธฐ๊ฐ์ ๊ฐ๋ฐ์๋ก ์ทจ์ ํ๊ณ , ํ์ง์ ์ฝ์ค๋ก ํญ๋ฐ ์ฑ์ฅ์ ์ด์ด๊ฐ์ธ์. ์ค์ ํ๋ก์ ํธ, ํฌํธํด๋ฆฌ์ค ๋ฉํ ๋ง, ๋ชจ์ ๋ฉด์ ๊น์ง.
hanghae99.spartacodingclub.kr
'โ๏ธ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉ๋ฅ์ํ ํ๋ก์ ํธ : 2์ฃผ์ฐจ ํ๊ณ (0) | 2024.07.01 |
---|---|
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 6์ผ์ฐจ TIL (0) | 2024.06.18 |
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 5์ผ์ฐจ TIL (0) | 2024.06.17 |
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 4์ผ์ฐจ TIL (0) | 2024.06.15 |
[ํญํด99 ์ทจ์ ๋ฆฌ๋ถํธ ์ฝ์ค ํ์ต์ผ์ง] 4์ฃผ์ฐจ 3์ผ์ฐจ TIL (0) | 2024.06.14 |