• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

sinup.js 에서 useInput 의 useCallback 의 두번째 인자가 빈 배열인 이유가 궁금합니다.

19.06.08 10:02 작성 조회수 412

0

 

안녕하세요. 좋은 강좌 잘 듣고 있습니다. 

 

아래 코드와 같이 useInput을 커스텀 훅으로 만들어 사용하셨는데요, 

두번째 인자인 배열[]이 빈 배열이면 한번만 실행하게 되고, 배열 안에 비교할 부분이 들어가면 그것을 기준으로 비교하는 것으로 알고 있습니다. 

그런데 아래와 같이 빈 배열일 경우 useCallback이 무엇을 기준으로 기억을 할 지 않할지 결정하는 건가요?

일단 코드 자체는 무리 없이 작동하는것 같습니다. 

질문을 요약하면 

 

1. useCallback에서 두번째 배열이 없을 시 어떻게 기존 상태와 비교를 하는지. 

2. 만약 1번이 맞다면 이경우 한번만 실행되야 정상인데 왜 인풋을 할때마다 아무 이상없이 실행되는지 궁금합니다. 

 

export const useInput = (initValue = null) => {
const [value, setter] = useState(initValue);
const handler = useCallback((e) => {
setter(e.target.value);
}, []);
return [value, handler];
};

답변 2

·

답변을 작성해보세요.

1

배열에 요소들이 없을 시 처음 기억해둔 함수를 끝까지 쓰는 것입니다.

한 번만 실행되는 것은 useEffect의 경우고요. 다른 것들은 처음 기억해둔 값이나 함수를 끝까지 계속 쓴다고 보시면 됩니다.

0

ryu sin님의 프로필

ryu sin

질문자

2019.06.08

아.. 드디어 완벽하게 이해했습니다 !  간단 명료하게 답장해 주셔서 감사합니다  ! 
use 페밀리들의 차이가 이제 좀 클리어해 지네요. 
좋은 주말보내세요 : )