인프런 커뮤니티 질문&답변

홍원배님의 프로필 이미지
홍원배

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

Custom Hook 부분 질문

작성

·

157

0

import React, { useStateuseCallback } from "react";

//custom Hook으로 만들기

export default function (initialValue = null) {
  console.log("몇번 렌더링?");
  const [ValuesetValue] = useState(initialValue);
  const handler = useCallback((e=> {
    setValue(e.target.value);
 }, []);

  return [Valuehandler];
}

제가 바르게 이해하고 있다면, useCallback은 필요없지 않은가요?

useCallback는 함수를 재정의 하지 않고 , 1. 콜백함수가 호출되면서 2.depth부분이 바뀌었을때의 두 조건이 충족해야 다시 재정의 한다고 알고 있습니다. 위 커스텀훅에서는 [] depth가 비어져있기에 첫 마운트 했을때만 작동하고 어떠한 움직임도 없어야 하기에 함수 내 setValue의 기능을 수행 하지 않는다는 뜻인데, console.log('몇번 렌더링');으로 찍어보니깐 다른 곳에서 useInput 을 사용할때마다 커스텀훅 페이지를 리렌더링 하기때문에 애초에 useCallback이 무의미한 것이 아닌가요?

애초에 다른 모듈에 있기에  useCallback은 의미가 없는게 아닌가 궁금합니다

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

해당 커스텀 훅이 재실행될 때마다 handler 함수를 계속 새로 생성하는 것을 막는 역할을 합니다. 커스텀훅은 컴포넌트가 렌더링될 때마다 재실행되고요.

"1. 콜백함수가 호출되면서" 이 부분이 틀렸습니다.

홍원배님의 프로필 이미지
홍원배

작성한 질문수

질문하기