ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ๋ก์ง์์ ์ ์ฅ๋ ๊ฐ๊ณผ , ์๋ฒ์ ํต์ ํ์ฌ ๊ฐ์ ธ์จ ์ต์ ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ํผ๋
ํ๋ก์ ํธ ์งํ ์ค, ๋ก๊ทธ์ธ/ํ์๊ฐ์
ํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ณผ์ ์์ ๋ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ์ ๋ณด(user์ userInfo)๋ฅผ ํผ๋ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
user: ํ์๊ฐ์
๋๋ ๋ก๊ทธ์ธ ์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ญ ์ํ(AuthContext)์ ์ ์ฅํ์ฌ ์ธ์ฆ์ ์ ์งํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.userInfo: ์ฌ์ฉ์๊ฐ ํ๋กํ ํ์ด์ง์ ๋ค์ด๊ฐ์ ๋, ์๋ฒ์ ํต์ ํ์ฌ ์ต์ ์ฌ์ฉ์ ์ ๋ณด์ ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด ๋ก์ปฌ ์คํ ๋ฆฌ์ง์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.user ๊ฐ์ ์ด๊ธฐ ์ฌ์ฉ์ ์ ๋ณด๋ก ์ค์ ๋์ง๋ง, ์ฌ์ฉ์๊ฐ ํ๋กํ ํ์ด์ง์ ๋ค์ด๊ฐ๊ฑฐ๋ ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ ๋ ์๋ฒ๋ก๋ถํฐ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ผ ํ์ต๋๋ค.user ๊ฐ๊ณผ ํ๋กํ ํ์ด์ง์์ ์๋ฒ์ ํต์ ํ์ฌ ๋ถ๋ฌ์จ ์ต์ ์ฌ์ฉ์ ์ ๋ณด(userInfo)๋ฅผ ํผ๋ํ๊ฒ ๋์ด, ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ๊ฐ๊ณผ ํผ๋์ด ๋ฐ์ํ์ต๋๋ค.user์ userInfo์ ์ญํ ๊ตฌ๋ถ:user: ๋ก๊ทธ์ธ/ํ์๊ฐ์
์์ ์ด๊ธฐ ์ ๋ณด(ID, ๋๋ค์, ํ ํฐ ๋ฑ)๋ฅผ ํฌํจํ๋ฉฐ, ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ์ฌ ์ ์ญ ์ํ ๊ด๋ฆฌ(AuthContext)์ ์ฌ์ฉ๋ฉ๋๋ค.userInfo: ํ๋กํ ํ์ด์ง์์ ์๋ฒ์ ํต์ ํ์ฌ ๊ฐ์ ธ์จ ์ต์ ์ฌ์ฉ์ ์ ๋ณด์
๋๋ค. ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ user์๋ ๋ค๋ฅด๊ฒ ํญ์ ์ต์ ์ ์ ๋ณด๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค.AuthContext์ user๋ ๋ก๊ทธ์ธ ์ํ์ ์ด๊ธฐ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๋ฐ ์ฌ์ฉํ๊ณ , ํ๋กํ ํ์ด์ง์์๋ ์๋ฒ์ ํต์ ํ์ฌ ๋ฐ์์จ ์ต์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ userInfo์ ์ ์ฅํ๋๋ก ํ์์ต๋๋ค.user ๊ฐ์ด ์๋, ์๋ฒ๋ก๋ถํฐ ๋ฐ์์จ ์ต์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๊ฒ ๋์ด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๊ฒ ๋์์ต๋๋ค.์ด์ ๋ ์ฌ์ฉ์๊ฐ ํ๋กํ ํ์ด์ง์ ๋ค์ด๊ฐ์ ๋ ์ต์ ์ ๋ณด๊ฐ ์ ์์ ์ผ๋ก ๋ฐ์๋๋ฉฐ, ํ
์คํธ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ์ ๋ณด ๋ณ๊ฒฝ์ด ์ฆ์ ์
๋ฐ์ดํธ๋ฉ๋๋ค. ๋ํ, ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๋ ์ ๋ณด(user)์ ์๋ฒ๋ก๋ถํฐ ์ต์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ(userInfo)์ ๋ช
ํํ๊ฒ ๊ตฌ๋ถํ์ฌ, ํผ๋ ์์ด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
user vs userInfouser๋?user๋ AuthContext์์ ๋ฐ์์จ ์ฌ์ฉ์ ์ ๋ณด์
๋๋ค.AuthContext๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ญ์์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ , ๋ก๊ทธ์ธ/๋ก๊ทธ์์ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.userInfo๋?userInfo๋ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ถ๊ฐ๋ก ๊ฐ์ ธ์จ ์ฌ์ฉ์ ์ ๋ณด์
๋๋ค.userInfo๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๋ก๋ถํฐ ๋ฐ์์จ ์ต์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค.userInfo๋ null๋ก ์ด๊ธฐํ๋๋์?userInfo๋ ์๋ฒ์ ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๋๊น์ง ๊ฐ์ด ์ ํด์ง์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ์ํ๋ก null๋ก ์ค์ ๋ฉ๋๋ค.userInfo๊ฐ ์์ผ๋ฏ๋ก null๋ก ์ด๊ธฐํํฉ๋๋ค.userInfo์ ๊ทธ ๊ฐ์ setUserInfo๋ก ์ค์ ํฉ๋๋ค.userInfo๋ฅผ ์ฌ์ฉํ๋์?user๋ context๋ก๋ถํฐ ๋ฐ์์จ ์ด๊ธฐ ์ ๋ณด์ด๊ณ , ์ด ์ ๋ณด๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ๋ ์ ๊ณต๋ ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด์ผ ๋ฟ์
๋๋ค.user ๋์ ์๋ฒ์ ํต์ ํ์ฌ ๊ฐ์ ธ์จ ์ต์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ userInfo๋ฅผ ์ฌ์ฉํฉ๋๋ค.const { user } = useContext(AuthContext); // context๋ก๋ถํฐ user ๋ฐ์์ด
์์ ์ฝ๋๋ context๋ก๋ถํฐ user ์ ๋ณด๋ฅผ ๋ฐ์์ต๋๋ค. ์ด๋ ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
const [userInfo, setUserInfo] = useState(null); // ์๋ฒ์์ ๋ฐ์์จ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ํ
์ฌ๊ธฐ์๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์์ฌ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ด๊ธฐ ์ํด userInfo ์ํ๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐ๊ฐ์ null๋ก ์ค์ ํฉ๋๋ค.
์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ๋ (useEffect ํธ์ถ):
user๊ฐ ์์ผ๋ฉด, ์๋ฒ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํฉ๋๋ค.setUserInfo(response.data)๋ก ์ํ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.userInfo ์ฌ์ฉ:
userInfo๋ฅผ ์ฌ์ฉํฉ๋๋ค.user๋ ๋ก๊ทธ์ธ ์ ์ด๊ธฐ ์ ๋ณด๋ฅผ ์๋ฏธํ๋ฉฐ, AuthContext์์ ๋ฐ์์ต๋๋ค.userInfo๋ ์๋ฒ๋ก๋ถํฐ ์ถ๊ฐ๋ก ๋ฐ์์จ ์ต์ ์ฌ์ฉ์ ์ ๋ณด์
๋๋ค.userInfo๋ null๋ก ์ด๊ธฐํํ์ฌ, ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ธฐ ์ ๊น์ง๋ ์ ๋ณด๊ฐ ์๋ ์ํ๋ฅผ ๋ํ๋
๋๋ค.