더북(TheBook)

함수 참조 방식을 사용할 때 함수명 뒤에 괄호를 붙이면 안 됩니다. 괄호를 붙이면 함수가 바로 실행되므로 버튼을 클릭하지 않아도 컴포넌트가 화면에 나타나는 순간 함수가 실행됩니다. 즉, 다음은 잘못된 방법입니다.

<button onClick={clickHandler()}>click</button>

 

이벤트 핸들러의 매개변수

리액트에서는 이벤트 핸들러에 매개변수를 전달할 때 인라인 핸들러 방식을 사용해야 합니다. 함수 참조 방식으로는 매개변수를 전달할 수 없습니다. 예를 들어, 버튼을 클릭했을 때 ‘hello’라는 메시지를 출력하고 싶다면 다음과 같이 작성합니다.

src/App.tsx

export default function App() {
  const clickHandler = (msg: string) => {
    alert(msg);
  };
  return (
    <>
      <button onClick={() => { clickHandler('hello'); }}>click</button>
    </>
  );
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.