header-img
Info :
728x90

λ¦¬μ•‘νŠΈ 16.8 버전 μ΄μ „μ—μ„œλŠ” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œ μƒνƒœ 관리λ₯Ό ν•  μˆ˜κ°€ μ—†μ—ˆμŒ. (μ»¨λ²„νŒ… ν•˜λŠ” μ‚¬λžŒλ„ λ³΄μ•˜λ‹€..) ν•˜μ§€λ§Œ 16.8 버전 λΆ€ν„° Hooks λΌλŠ” κΈ°λŠ₯이 λ„μž…λ˜λ©° ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œ μƒνƒœλ₯Ό 관리할 수 있게 λ˜μ—ˆλ‹€.!

​

β€» Hook : ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈμ—μ„œ React state (λ¦¬μ•‘νŠΈμ—μ„œ μ•„μ£Ό μ€‘μš”ν•œ κ°œλ… 쀑 ν•˜λ‚˜) 와 생λͺ…μ£ΌκΈ° κΈ°λŠ₯(lifecycle features)을 연동할 수 있게 ν•΄μ£ΌλŠ” ν•¨μˆ˜.

β€» μƒνƒœκ΄€λ¦¬(State Management) : 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” 방법. μ—¬λŸ¬ component 간에 데이터 전달과 이벀트 톡신을 ν•œ κ³³μ—μ„œ κ΄€λ¦¬ν•˜λŠ” 것을 의미.

​

λ¦¬μ•‘νŠΈλ‘œ κ°œλ°œμ„ ν•˜λ‹€λ³΄λ©΄ usestate λ₯Ό μ μ ˆν•œ μœ„μΉ˜μ—μ„œ μ„ μ–Έν•˜κ³ , 잘 λ‚΄λ €μ£Όκ³ (상속) 꼬이지 μ•Šλ„λ‘ κ΄€λ¦¬ν•˜λŠ” 것이 κ³ μ˜€κΈ‰ μŠ€ν‚¬μ΄λΌλŠ” 것을 κΉ¨λ‹«κ²Œ λœλ‹€. μ–΄λ–»κ²Œ 보면 λ³€μˆ˜ μ„ μ–Έ λ§ŒνΌμ΄λ‚˜ 잘 μ‚¬μš©λ˜λ©°, μ€‘μš”ν•œ κ°œλ…μ΄λΌ 1번째둜 λ„£κ²Œ λ˜μ—ˆλ‹€.

 

μ‚¬μš©λ°©λ²•

import React, { useState } from 'react';
// react Hook 인 usestateλ₯Ό μ‚¬μš©ν•˜κ² λ‹€.

function Counter() {
  const [number, setNumber] = useState(0);
// λ™μ μœΌλ‘œ DOM을 λ³€κ²½ μ‹œμΌœμ€„ λ³€μˆ˜ number μ„ μ–Έ
// usestate λŠ” μ‰½κ²Œ λ§ν•˜μ—¬ get, set ν˜•μ‹μœΌλ‘œ μ…‹νŠΈλ‘œ μ„ μ–Έν•΄μ•Ό 함.

  const onIncrease = () => {
    setNumber(number + 1);
  }

  const onDecrease = () => {
    setNumber(number - 1);
  }

  return (
    <div>
      <h1>{number}</h1>
      <button onClick={onIncrease}>+1</button>
      <button onClick={onDecrease}>-1</button>
    </div>
  );
}

export default Counter;

 

1. λ¦¬μ•‘νŠΈ νŒ¨ν‚€μ§€μ—μ„œ useStateλ₯Ό λΆˆλŸ¬μ˜¨λ‹€.

2. μƒνƒœμ˜ 기본값을 집어 λ„£μ–΄ ν˜ΈμΆœν•΄μ€Œ. get, set ν˜•μ‹. 첫번째 μ›μ†ŒλŠ” ν˜„μž¬ μƒνƒœ. λ‘λ²ˆμ§Έ μ›μ†ŒλŠ” setter ν•¨μˆ˜.

3. μ›ν•˜λŠ” κ³³μ—μ„œ μ μ ˆν•˜κ²Œ μ‚¬μš©ν•΄μ€€λ‹€.

 

예제

 

 

 

μ™œ Reactμ—μ„œ DOM에 λ³€ν™”λ₯Ό μ£Όλ €λ©΄ λ³€μˆ˜λ₯Ό Usestate둜 μ„ μ–Έν•΄μ•Ό ν•˜λŠ”κ±ΈκΉŒ?

 

λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈλŠ” mount-unmount-didmount ν˜•μ‹μ˜ 생λͺ… μ£ΌκΈ°κ°€ 이루어진닀.

μ—¬κΈ°μ„œ μ„ΈλΆ€μ μœΌλ‘œ λ“€μ–΄κ°€κ²Œ 되면, mount μƒνƒœμ—μ„œ ν•œλ²ˆ λ Œλ”λ§μ„ μ‹€ν–‰ν•˜κ³ , ν›„μ—λŠ” update μƒνƒœμ— μ§„μž…ν•˜μ—¬ shouldComponentUpdate === true 일 λ•Œλ§Œ λ Œλ”λ§μ„ μ‹€ν–‰ν•˜κ²Œ λœλ‹€.

 

λ”°λΌμ„œ λ³€κ²½λœ λ³€μˆ˜κ°€ 화면에 적용되렀면

1. state ν˜Ήμ€ props에 λ³€ν™˜μ΄ μΌμ–΄λ‚˜μ•Όν•¨

2. λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§ μ‹œμΌœμ•Όν•¨

3. forceUpdate λ₯Ό μ‚¬μš©ν•΄μ•Όν•¨.

세가지 쀑에 ν•˜λ‚˜λ₯Ό 선택해야 ν•˜λŠ” 상황이 λ°œμƒν•˜κ²Œ λ˜λŠ” 것이닀.

​

ν•œμ€„ μš”μ•½ν•˜μžλ©΄, λ¦¬μ•‘νŠΈ 생λͺ…μ£ΌκΈ° 상 νŠΉμ„± λ•Œλ¬Έμ— λ³€μˆ˜λ₯Ό λ³€κ²½ν•˜λ”λΌλ„ λ‚΄λΆ€μ˜ 값은 λ³€ν™˜λ˜μ§€λ§Œ DOM 상, ν™”λ©΄ μƒμ˜ 값은 ν™”λ©΄ λ¦¬λ Œλ”λ§μ΄ μΌμ–΄λ‚˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— λ³€κ²½λ˜μ§€ μ•ŠλŠ” 것.

 

μ–Έμ œ μ‚¬μš©ν•˜λ©΄ μ’‹μ„κΉŒ?

β‘  μƒνƒœ 값이 λΆˆκ·œμΉ™ν•  λ•Œ

const [testDate, setTestData] = useState();

 

μœ„μ™€ 같은 ν˜•νƒœλ‘œ 선언이 κ°€λŠ₯ν•˜κΈ°μ—, μ‚¬μš©μž μž…λ ₯값이 λΆˆκ·œμΉ™ν•˜κ±°λ‚˜ 예츑 λΆˆκ°€ν•œ 데이터λ₯Ό 받을 λ•Œ μ‚¬μš©ν•˜λ©΄ μœ μš©ν•˜λ‹€.

​

β‘‘ μƒνƒœ 관리가 ν•„μš”ν•  λ•Œ.

 

β‘’ DOM λ³€ν™”λ₯Ό μΌμœΌν‚€λŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ.

- DOM λ³€ν™”λ₯Ό μΌμœΌν‚€μ§€ μ•ŠλŠ” λ³€μˆ˜μ˜ 경우 일반 λ³€μˆ˜ const, var, let 으둜 μ„ μ–Έν•˜λŠ” 것이 μ•ˆμ •μ .

 

 

+)

λ¦¬μ•‘νŠΈμ—μ„œ μ œκ³΅ν•˜λŠ” 곡식 hook μ΄λ‹ˆ μ•ˆμ •μ„±μ— λŒ€ν•΄μ„œλŠ” λ―Ώκ³  μ‚¬μš©ν•˜μ—¬λ„ λœλ‹€.

 

 


​곡식 λ¬Έμ„œλ₯Ό μ½κ±°λ‚˜ κ°œλ°œν•˜λ©° 느꼈던 λ‡Œν”Όμ…œλ‘œ μž‘μ„±ν•˜κ³  μžˆμœΌλ‹ˆ, 

κΆκΈˆν•˜μ‹  μ μ΄λ‚˜ 잘λͺ»λœ 점이 μžˆλ‹€λ©΄ λŒ“κΈ€ λ‚¨κ²¨μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

 

728x90
더보기
Document/λ¨•μ„ μƒμ˜ 코딩ꡐ싀