개발자

usecallback 으로 만든 함수가 새로 불러와 지지 않음을 어떻게 확인할 수 있나요?

2023년 06월 23일조회 147

usecallback 사용하면 함수가 디펜던시가 변하지 않으면 새롭게 불러와지지 않는데 함수가 새롭게 불러와지지 않음을 어떻게 확인할 수 있을까요? useinput로 따로 빼서 그 안에 콘솔 넣고 확인해봤는데 계속 콘솔이 찍히더라고요! 그러면 useInput으로 따로 커스텀해서 사용하는 이유가 뭘까요...? (커스텀 훅으로 만들었습니다)

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

김인후님의 프로필 사진

useEffect로 찍어보시는 건 어떨까요? 그리거 저는 useInput은 여러개의 input를 관리하기 용이하여 사용하고 있어요!

김하림님의 프로필 사진

두 가지 방법이 있고 첫 번째 useEffect를 활용한 방법을 추천드립니다. 1. (추천) `useEffect`에 `useCallback`으로 정의한 함수를 종속성으로 넣고 useEffect 로직이 몇 번 실행되는지 확인해 본다. - 코드 참조 2. `React.memo`로 감싼 자식 컴포넌트를 만들고 `useCallback`으로 정의한 함수를 prop으로 받는다. 부모 컴포넌트에서 일부러 렌더링을 유발시킨 뒤 자식 컴포넌트에서 console.log('render')가 찍히는지 확인해본다. 이 경우, 만약 `useCallback`으로 메모이제이션된 함수가 변경되지 않았다면, 해당 함수를 prop으로 받는 자식 컴포넌트는 리렌더링되지 않아야 한다.

1const memoizedCallback = useCallback(() => {
2  doSomething(a, b);
3}, [a, b]);
4
5useEffect(() => {
6  console.log('함수 참조 변경');
7}, [memoizedCallback]);
커리어리 AI 봇님의 프로필 사진

'useCallback' 훅을 사용하여 생성된 함수가 새롭게 불러와지지 않음을 확인하는 방법은 다음과 같습니다. 1. 'console.log'를 사용하여 함수가 호출되었는지 확인하기: 'useCallback'으로 생성된 함수 내부에 'console.log'를 추가하여 함수가 호출되었을 때 콘솔에 로그가 출력되는지 확인할 수 있습니다. 이 방법은 함수가 새롭게 불러와지지 않으면 로그가 한 번만 출력되는 것을 확인할 수 있습니다. 2. 함수 내부의 지역 변수를 사용하여 상태 유지하기: 'useCallback'으로 생성된 함수 내부에 지역 변수를 사용하여 함수가 호출되었는지 상태를 유지할 수 있습니다. 예를 들어, 함수 내부에 'let count = 0'과 같이 변수를 선언하고 함수가 호출될 때마다 'count' 값을 증가시키는 등의 작업을 수행하면, 'count' 변수의 값이 계속 유지되는 것을 확인할 수 있습니다. 'useInput' 커스텀 훅의 경우, 'useCallback'으로 생성된 함수를 반환하는 것이 아니라 입력값과 이벤트 핸들러를 반환하는 훅일 것으로 예상됩니다. 'useInput' 훅 내부에서는 입력값의 상태 관리와 이벤트 핸들러의 생성을 담당하고, 이벤트 핸들러는 매번 새롭게 생성되는 것이 일반적입니다. 이렇게 커스텀 훅을 사용하면 다른 컴포넌트에서도 동일한 로직을 사용할 수 있으며, 코드의 재사용성과 가독성을 높일 수 있습니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!