febc11-react

3장 리액트 훅

리액트 훅이란?

useState

API

const [state, setState] = useState(initialState);

매개변수

리턴값

useEffect

API

useEffect(setup, dependencies?);

매개변수

useReducer

API

function reducer(state, action){ ... }
const [state, dispatch] = useReducer(reducer, initialArg, init?);

매개변수

리턴값

상태 관리: useState vs. useReducer

코드 크기

가독성

디버깅

테스트

개인 선호도에 따름

useRef

API

const ref = useRef(initialValue);

매개변수

리턴값

input 요소의 값 지정: useState vs. useRef

useState 사용

예시
function App(){
  const [msg, setMsg] = useState('');
  return (
    <>
      <h1>01 useState - 상태 관리</h1>
      <div>
        <input type="text" value={ msg } onChange={ e => setMsg(e.target.value) } />
        <br/>
        <span>입력 메세지: { msg }</span>
      </div>
    </>
  );
}

useRef 사용

예시
function Counter() {
  const step = useRef(1);

  return (
    <div id="counter">
      <input type="number" defaultValue={ step.current } onChange={ e => step.current = Number(e.target.value) } />
      <Button color="red">-</Button>
      <Button>0</Button>
      <Button color="blue">+</Button>
      <span>0</span>
    </div>
  );
}

useMemo

API

const calculateValue = function(){ ... };
const cachedValue = useMemo(calculateValue, dependencies);

매개변수

리턴값

React.memo

API

const MemoizedComponent = React.memo(SomeComponent, arePropsEqual?)
매개변수
리턴값

React.memo 사용 시점


고차 함수 (Higher-Order Function)

정의

예시

useCallback

API

const cachedFn = useCallback(fn, dependencies);

매개변수

리턴값

useMemo vs. React.memo vs. useCallback

Custom Hook

훅 사용 시 주의사항