728x90
반응형

PLEASE REPORT: Excessive number of pending callbacks: 501

나의 경우 Touchable 컴포넌트를 사용하면서 이러한 warning이 발생하였음

warning이기에 큰 문제가 아니라고 생각될 수 있으나 이러한 콜백이 계속 쌓이면 응용 프로그램의 성능이 저하되거나 동작이 중단될 수 있음

 


발생 원인

이 warning은 불필요한 콜백이 계속해서 호출되어 생성되는 에러임

 


해결 방법

해결법은 여러가지가 있고 나는 Touchable 대신 Pressable을 사용하여 문제를 해결

그렇지만 아래와 같이 다양한 방법이 있음

1. 콜백 함수 내에서 setState()를 호출하지 말고, useRef()를 사용하여 변수를 업데이트 하기

2. 콜백 함수 내에서 비동기 작업이 발생하는 경우, useEffect() 훅을 사용하여 비동기 작업을 관리하기

3. 화면이 언마운트될 때, 즉 컴포넌트가 소멸될 때 이벤트 리스너를 해제하기

4. Touchable을 사용한 경우 Pressable로 대체하기 → Pressable이란?

 


4번에 대해서는 조금 더 자세히 살펴보자

Pressable을 사용하면 Touchable과 달리 내부에서 콜백 함수를 생성하지 않기에 해결 가능

Pressable은 onPressIn, onPressOut, onPress 등의 이벤트 핸들러를 제공하며, 이벤트 핸들러를 등록할 때 해당 이벤트가 발생할 때 실행될 함수를 전달함

즉, Pressable은 콜백 함수를 내부에서 생성하지 않고, 외부에서 전달받은 함수를 실행하기에 Pressable을 사용하면 Touchable에서 발생하는 콜백 함수의 불필요한 생성과 해제에 관련된 문제를 해결할 수 있음

또한, Pressable은 스타일과 애니메이션을 지원하므로, Touchable보다 다양한 UI 요소를 만들 수 있음

하지만, Pressable이 Touchable과 달리 내부에서 콜백 함수를 생성하지 않기 때문에, 이벤트 핸들러 호출 시 해당 이벤트 함수를 외부에서 전달받아 실행해야 하므로, 일부 작업에서는 Touchable을 사용하는 것이 더 간편할 수 있음

반응형
복사했습니다!