IT/React

React에서 onclick 이벤트에 매개 변수 전달하기

라임웨일 2022. 5. 13. 08:48
반응형

 

 

리액트에서 클릭 이벤트 시 필요한 값을 매개변수로 전달할 때 일반적으로 자바스크립트에서 사용하던 방식으로 전달하게 되면 원하는 결과가 발생되지 않습니다.

 

만약 일반적인 방식처럼 <button type="button" onClick={test('매개변수 값')} /> 작성한다면 리액트는 화면이 Render 되면서 계속해서 이벤트가 발생되기 때문에 우리가 원하는 특정 이벤트일 때 결과를 얻는 이벤트는 적용할 수 없습니다.  그래서 우리가 원하는 결과를 위해서는 화살표 함수로 감싸서 전달해야 우리가 원하는 클릭 이벤트가 발생했을 때 원하는 매개변수 값을 확인할 수 있습니다. 보다 이해가 쉽게 코드를 보면서 살펴볼게요.

 

예제 코드

import React from 'react';

const Example = () => {  
  function sayHello(name) {
    alert(name);
  }
  
  return (
    <button onClick={() => sayHello('Tom')}>인사하기</button>
  );
}

export default Example;

 

매개변수와 같이 기본적인 event 핸들링까지 같이 전달해야 하는 경우에는 아래와 같이 작성해서 전달해 줍니다.

import React from 'react';

const Example = () => {  
  function sayHello(event, name) {
    alert(event, name);
  }
  
  return (
    <button onClick={(event) => sayHello(event, 'Tom')}>인사하기</button>
  );
}

export default Example;

 

결론적으로 내용을 정리하면 매개변수를 받는 함수는 화살표 함수로 감싸고, 인자를 받지 않는 함수는 함수 이름만 적어서 작성합니다.

const CountApp = () => {
  const [count, setCount] = useState(0);

  const onIncrease = (n) => {
    setCount(count + n);
  }
  const onDecrease = () => {
    setCount(count - 1);
  }

  return(
    <>
      <p>count: {count}</p>
      // 매개변수를 받는 핸들러
      <button onClick={() => onIncrease(3)}>3 증가</button>
      // 매개변수를 받지 않는 핸들러
      <button onClick={onDecrease}1 감소</button>
    </>
  );
}

어찌 보면 당연한 내용인데 저는 이 내용을 정확히 몰라서 한참 고생했네요. 검색해도 내용이 나오지 않아 한참 동안 고생했네요. 이 글을 읽는 분들은 저와 같이 고생하지 마시고 즐겁게 코딩하세요. 

 

감사합니다.

 

반응형