개발자 준비과정/Javascript, React

콜백 함수 (리액트 예제)

하늘바람a 2024. 5. 20. 23:22

콜백 함수(Callback Function)란?

 

  • 다른 함수의 인자로 넘겨지는 함수.
  • 그 함수의 내부에서 호출되어 특정 작업을 수행하게 된다.
  • 비동기 작업을 할 때 주로 활용되는 개념이다
  • 특정 시점에 원하는 작업을 수행할 수 있게 해주는 핵심 개념

 

 

React에서 콜백 함수 사용

 

 

1. 이벤트 핸들러

const handleClick = () => {
  console.log('Button clicked!');
}

return (
  <button onClick={handleClick}>클릭</button>
)


여기서 onClick 이벤트에 전달된 handleClick 함수가 콜백 함수버튼 클릭 시 React에 의해 호출된다.

 

 

2. 상태 업데이트

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

const incrementCount = () => {
  setCount(prevCount => prevCount + 1);
}

return (
  <div>
    <p>Count: {count}</p>
    <button onClick={incrementCount}>증가</button>
  </div>
)


setCount에 전달된 콜백 함수는 이전 상태값을 받아 새로운 값을 반환하게 되어 있다.

 

3. 효과 정리

useEffect(() => {
  const cleanup = () => {
    // 정리 작업
  }
  
  return cleanup; // 콜백 반환
}, []);


여기서 useEffect에서 반환된 cleanup 함수는 콜백함수이다.

컴포넌트가 unmount 되기 직전에 React에 의해 호출되어, 메모리 누수나 부작용을 방지하기 위한 정리 작업을 처리하게 된다.

 

4. 비동기 작업

const fetchData = () => {
  axios.get('/data')
    .then(response => {
      // 데이터 처리
    })
    .catch(error => {
      // 에러 처리  
    });
}


axios 같은 비동기 라이브러리에서 then, catch에 전달된 콜백들Promise가 처리된 후 호출되는 방식이다. 

 

 


 

 

인자, 파라미터 구분

 

파라미터 : 함수 정의 시 선언된 변수

인자 : 함수를 호출할 때 전달되는 값

 

 

 

콜백 함수는 다른 함수의 인자로 전달되는 함수

 

function handleClick(callback) {
  // 어떤 작업 수행 후
  callback(); // callback이 인자
}

handleClick(() => {
  console.log('버튼 클릭!'); // () => {...} 가 인자
});


handleClick 함수의 파라미터는 callback이고, 

이 callback은 함수 호출 시 넘겨진 익명 함수 리터럴의 인자로 사용되는 것이다.