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

반가우면반갑다고해님의 프로필 이미지
반가우면반갑다고해

작성한 질문수

React로 NodeBird SNS 만들기

4-15. 댓글 컴포넌트 만들기

몇가지 질문있습니다.

작성

·

106

0

1.setCommentFormOpened(prev => !prev); 

  => prev는 정해진 이름인가요? 예를들어 kimch 이런식으로 이름을 지어줘도 괜찮나요?

2. !me 

=>  me가 null 이면 !me 라고 생각해도 될까요?

3. useCallback() 

=> 정확히 잘 모르겠습니다. 

"- useCallback으로 감싸는 함수기준은 자식 컴포넌트에 넘겨주는 함수는 무조건 감싸준다고 보면됨 " 으로 제가 정리해두기는 했지만 .. 넘겨준다는게 무슨 뜻인가요? 

다른 컴포넌트에서 cosnt name => ({component})=>{}이런식으로

 ({component}) << 이 부분에 들어갈수있는 모든것들은 useCallback()로 감싸주어야하나요?

4. useCallback() 

=> 뒤에 .[] << 이부분의 정확한 용도가 무엇일까요? useEffect()의 .[] 처럼 대괄호 안에있는 변수나 조건등등이 바뀔때마다 렌더링된다로 이해하면 될까요?

마지막으로 긴 글 읽어주셔서 감사합니당!

답변 2

1

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

1. 이름은 마음대로 바꾸셔도 됩니다.

2. me가 null인 경우에는 !me가 true가 되겠죠?

3. jsx에 들어가는 함수인 경우에 useCallback으로 감싸주셔야 합니다. <button onClick={onClick}>처럼 jsx에 들어가는 onClick에요.

4. 감싸주지 않으면 onClick 함수가 리렌더링 시마다 새로 만들어집니다. 함수를 새로 만드는 것은 낭비입니다. 새로 만들어지는 것을 막기 위해서 []를 사용하는 거고, 새로 만들어주어야 하는 특별한 경우가 생기는데(useCallback에서 사용하는 state가 바뀐다거나) 그럴 때 새로 만드는 기준이 될 state를 배열 안에 넣어줍니다.

0

와 정말 감사합니다. 도움 많이됬습니다. 사랑합니다! 

반가우면반갑다고해님의 프로필 이미지
반가우면반갑다고해

작성한 질문수

질문하기