[๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] ์‚ฌ์šฉ์ž ์ •๋ณด ๊ด€๋ฆฌ์—์„œ `user`์™€ `userInfo`์˜ ํ˜ผ๋™ ๋ฌธ์ œ ํ•ด๊ฒฐ

gimmariยท2024๋…„ 9์›” 10์ผ
1

๐Ÿ“ React

๋ชฉ๋ก ๋ณด๊ธฐ
22/24

MBTI

ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ๋กœ์ง์—์„œ ์ €์žฅ๋œ ๊ฐ’๊ณผ , ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด ๊ฐ’์„ ํ˜ผ๋™

์ƒํ™ฉ:

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘, ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํ›„ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‘ ๊ฐ€์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์ •๋ณด(user์™€ userInfo)๋ฅผ ํ˜ผ๋™ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. user: ํšŒ์›๊ฐ€์ž… ๋˜๋Š” ๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์™€ ์ „์—ญ ์ƒํƒœ(AuthContext)์— ์ €์žฅํ•˜์—ฌ ์ธ์ฆ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. userInfo: ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ:

  • ๋กœ๊ทธ์ธ ํ›„ user ๊ฐ’์€ ์ดˆ๊ธฐ ์‚ฌ์šฉ์ž ์ •๋ณด๋กœ ์„ค์ •๋˜์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๊ฑฐ๋‚˜ ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ์‹œ ์ดˆ๊ธฐ user ๊ฐ’๊ณผ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜จ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด(userInfo)๋ฅผ ํ˜ผ๋™ํ•˜๊ฒŒ ๋˜์–ด, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ๊ฐ’๊ณผ ํ˜ผ๋™์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ, ์ƒˆ๋กœ์šด ์ •๋ณด๊ฐ€ ํ™”๋ฉด์— ์ œ๋Œ€๋กœ ๋ฐ˜์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  1. user์™€ userInfo์˜ ์—ญํ•  ๊ตฌ๋ถ„:
    • user: ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ์‹œ์˜ ์ดˆ๊ธฐ ์ •๋ณด(ID, ๋‹‰๋„ค์ž„, ํ† ํฐ ๋“ฑ)๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์—ฌ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ(AuthContext)์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • userInfo: ํ”„๋กœํ•„ ํŽ˜์ด์ง€์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์˜ user์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ •๋ณด๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.
  2. ์ •ํ™•ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ:
    • AuthContext์˜ user๋Š” ๋กœ๊ทธ์ธ ์ƒํƒœ์™€ ์ดˆ๊ธฐ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ณ , ํ”„๋กœํ•„ ํŽ˜์ด์ง€์—์„œ๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๋ฐ›์•„์˜จ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ userInfo์— ์ €์žฅํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ด๋กœ ์ธํ•ด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ user ๊ฐ’์ด ์•„๋‹Œ, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ์ตœ์‹  ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ:

์ด์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ”์„ ๋•Œ ์ตœ์‹  ์ •๋ณด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜์˜๋˜๋ฉฐ, ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋‚˜ ์‚ฌ์šฉ์ž ์ •๋ณด ๋ณ€๊ฒฝ์ด ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ •๋ณด(user)์™€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ตœ์‹  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ถ€๋ถ„(userInfo)์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜์—ฌ, ํ˜ผ๋™ ์—†์ด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


1. user vs userInfo

user๋ž€?

  • user๋Š” AuthContext์—์„œ ๋ฐ›์•„์˜จ ์‚ฌ์šฉ์ž ์ •๋ณด์ž…๋‹ˆ๋‹ค.
  • ์ด ์ •๋ณด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ ์ƒ์„ฑ๋œ ์ดˆ๊ธฐ ์ •๋ณด(์˜ˆ: ์‚ฌ์šฉ์ž ID, ๋‹‰๋„ค์ž„, ํ† ํฐ ๋“ฑ)๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • AuthContext๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ , ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

userInfo๋ž€?

  • userInfo๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ถ”๊ฐ€๋กœ ๊ฐ€์ ธ์˜จ ์‚ฌ์šฉ์ž ์ •๋ณด์ž…๋‹ˆ๋‹ค.
  • ์ด ์ •๋ณด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ์ตœ์‹ ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์„ ๋•Œ, ์ตœ์‹  ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ userInfo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

2. ์™œ userInfo๋Š” null๋กœ ์ดˆ๊ธฐํ™”๋˜๋‚˜์š”?

  • userInfo๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ๊นŒ์ง€ ๊ฐ’์ด ์ •ํ•ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ์ƒํƒœ๋กœ null๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์ „๊นŒ์ง€๋Š” userInfo๊ฐ€ ์—†์œผ๋ฏ€๋กœ null๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•„์˜ค๋ฉด userInfo์— ๊ทธ ๊ฐ’์„ setUserInfo๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

4. ์™œ userInfo๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”?

  • user๋Š” context๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ์ดˆ๊ธฐ ์ •๋ณด์ด๊ณ , ์ด ์ •๋ณด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ ์ œ๊ณต๋œ ๊ธฐ๋ณธ์ ์ธ ์ •๋ณด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ, ํ”„๋กœํ•„ ํŽ˜์ด์ง€์—์„œ๋Š” ๋” ์ตœ์‹ ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋ฐ์ดํŠธํ•œ ์ •๋ณด๊ฐ€ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ user ๋Œ€์‹  ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ์ตœ์‹  ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” userInfo๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ ์„ค๋ช…

const { user } = useContext(AuthContext); // context๋กœ๋ถ€ํ„ฐ user ๋ฐ›์•„์˜ด

์œ„์˜ ์ฝ”๋“œ๋Š” context๋กœ๋ถ€ํ„ฐ user ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

const [userInfo, setUserInfo] = useState(null); // ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ƒํƒœ

์—ฌ๊ธฐ์„œ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ฌ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•ด userInfo ์ƒํƒœ๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐ๊ฐ’์„ null๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ํ๋ฆ„

  1. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋  ๋•Œ (useEffect ํ˜ธ์ถœ):

    • user๊ฐ€ ์žˆ์œผ๋ฉด, ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋ฉด setUserInfo(response.data)๋กœ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  2. userInfo ์‚ฌ์šฉ:

    • ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด userInfo๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋„ ์ตœ์‹ ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ

  • user๋Š” ๋กœ๊ทธ์ธ ์‹œ ์ดˆ๊ธฐ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, AuthContext์—์„œ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
  • userInfo๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ถ”๊ฐ€๋กœ ๋ฐ›์•„์˜จ ์ตœ์‹  ์‚ฌ์šฉ์ž ์ •๋ณด์ž…๋‹ˆ๋‹ค.
  • userInfo๋Š” null๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ, ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์ „๊นŒ์ง€๋Š” ์ •๋ณด๊ฐ€ ์—†๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
profile
๊น€๋งˆ๋ฆฌ์˜ ๊ฐœ๋ฐœ.๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€