λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

React

[React] Lazy initialization

SleepyWoods ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° 전체 μ±„νŒ… κΈ°λŠ₯을 κ΅¬ν˜„ν–ˆμ—ˆλ‹€.

 

μ „μ²΄μ±„νŒ…μ„ κ΅¬ν˜„ν•˜λ©΄μ„œ ν˜Ήμ‹œ λΆ€λ“μ΄ν•œ 상황이 λ°œμƒν•΄ μƒˆλ‘œκ³ μΉ¨μ΄ λ˜λŠ” κ²½μš°μ— 이전에 λ‚˜λˆ΄λ˜ 이야기λ₯Ό 확인해야 ν•˜λŠ” κ²½μš°κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„κΉŒ? λΌλŠ” 생각에 νœ˜λ°œμ„±μœΌλ‘œ μ±„νŒ… 내역을 μΌμ‹œμ μœΌλ‘œ μ €μž₯ν•˜κΈ°λ‘œ ν•˜μ˜€κ³ , ν˜„μž¬ μƒν™©μ—μ„œ Redisλ₯Ό λ„μž…ν•˜κΈ°μ—λŠ” μΌμ •μ μœΌλ‘œ 무리가 μžˆμ—ˆκΈ° λ•Œλ¬Έμ— μ„Έμ…˜ μŠ€ν† λ¦¬μ§€λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

 

이전 μ±„νŒ… 내역을 μ΄ˆκΈ°μ— κ°€μ Έμ˜€κΈ° μœ„ν•΄μ„œ λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό μž‘μ„±ν–ˆλ‹€.

const [chatDatas, setChatDatas] = useState<chatType[]>(() => {
  const sessionStorageChat = sessionStorage.getItem('chat');
  return sessionStorageChat ? JSON.parse(sessionStorageChat) : [];
});

 

문득 λ“  생각이 μ΄λ ‡κ²Œ 되면 μƒνƒœκ°€ λ³€κ²½λ˜κ±°λ‚˜, μƒμœ„ μ»΄ν¬λ„ŒνŠΈμ— 변동이 생겨 λ¦¬λžœλ”λ§ 될 κ²½μš°μ— μ„Έμ…˜μŠ€ν† λ¦¬μ§€λ₯Ό μ‘°νšŒν•˜λŠ” λ™μž‘μ΄ 계속 μΌμ–΄λ‚˜λŠ” 것이 μ•„λ‹Œκ°€? λΌλŠ” 생각을 ν–ˆμ—ˆκΈ° λ•Œλ¬Έμ— μ°Ύμ•„λ³΄λ‹ˆ μœ„μ²˜λŸΌ μ΄ˆκΈ°κ°’μ„ ν• λ‹Ήν•  λ•Œ ν•¨μˆ˜λ₯Ό λ„˜κ²¨μ€¬μ„ λ•Œ 일반 값을 λ„˜κ²¨μ£ΌλŠ” 것과 λ‹€λ₯΄κ²Œ λ™μž‘μ„ ν•œλ‹€κ³  ν•œλ‹€.

 

λͺ…μΉ­λΆ€ν„° λ§ν•˜μžλ©΄ κ²ŒμœΌλ₯Έ μ΄ˆκΈ°ν™”(Lazy initialization) λΌκ³  ν•˜λŠ”λ° React 곡식 λ¬Έμ„œμ— λ”°λ₯΄λ©΄, ν•¨μˆ˜λŠ” 였직 stateκ°€ 처음 λ§Œλ“€μ–΄ 질 λ•Œλ§Œ μ‹€ν–‰λ˜κ³ . 이후 λ‹€μ‹œ λ¦¬λ Œλ”λ§λ˜λ©΄ 이 ν•¨μˆ˜μ˜ 싀행은 λ¬΄μ‹œλœλ‹€κ³  ν•œλ‹€.

 

λ”°λΌμ„œ useStateλ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ 초기 값을 ν• λ‹Ήν•  λ•Œ λ³΅μž‘ν•œ 연산을 ν¬ν•¨ν•˜λŠ” 경우 μ‚¬μš©ν•˜λ©΄ 처음 λžœλ”λ§ λ λ•Œλ§Œ μ‹€ν–‰λ˜κ³  μ΄ν›„λΆ€ν„°λŠ” μ‹€ν–‰λ˜μ§€ μ•Šμ•„ μ„±λŠ₯ μ΅œμ ν™”μ˜ 효과λ₯Ό λ³Ό 수 μžˆλ‹€.

 

λ‚΄ 경우 μ„Έμ…˜μŠ€ν† λ¦¬μ§€λ₯Ό μ‘°νšŒν•˜λŠ” 보닀 무거운 μž‘μ—…μ΄ 처음 λžœλ”λ§ 될 λ•Œ ν•œ 번만 싀행이 되고 이후 μ»΄ν¬λ„ŒνŠΈ λ‚΄ μƒνƒœκ°€ λ³€κ²½λ˜μ—ˆμ„ λ•ŒλŠ” μˆ˜ν–‰λ˜μ§€ μ•Šμ•„ μ„±λŠ₯μƒμœΌλ‘œ μ΅œμ ν™”κ°€ κ°€λŠ₯ν–ˆλ‹€.

 

μΆ”κ°€μ μœΌλ‘œ 게으λ₯Έ μ΄ˆκΈ°ν™”λ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°λ‘œλŠ” λ°°μ—΄μ„ λ‹€λ£¨λŠ” map, filter, find λ“±μ˜ λ°°μ—΄ λ©”μ„œλ“œ λ˜λŠ” λ‘œμ»¬μŠ€ν† λ¦¬μ§€λ‚˜ μ„Έμ…˜μŠ€ν† λ¦¬μ§€ 쑰회 같은 λ™μž‘λ“€μ΄ ν¬ν•¨λœλ‹€κ³  ν•œλ‹€.