• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

최적화 8분 55초 / 15분 24초

24.01.10 11:33 작성 조회수 85

1

안녕하세요! 강의 수강 중 궁금한 점이 생겨서 질문 드립니다.

해당 부분은 8분 55초 , 15분 24초 입니다!

  1. 8분 55초 부분에서 설명하실 때 'useState의 상태변화 함수인 setState는 리렌더가 일어나도 동일한 id를 보장한다' 라고 하시는데 이게 클로저랑 연관있는 설명이 맞을까요? setState가 클로저 특성으로 이전의 상태 값을 기억해서 리렌더가 일어나도 상태 값을 기억해서 state를 바꿔주는..! 그래서 동일한 id를 보장하는게 맞을까요?

 

  1. 15분 24초에서는 'setEmotion에서는 emotion을 받아서 보여주고 있기 때문에 가장 최신의 state를 참조할 필요가 없다. 그래서 함수형 업데이트를 전달할 필요가 없다' 하셨는데 이 부분을 잘 이해 못했습니다..!

    setEmotion으로 최신의 emotion state를 받으니까 최신의 상태인 건 알겠는데 그래서 함수형 업데이트를 할 필요가 없다는 부분을 모르겠습니다.. 함수형 업데이트가 뭐죠..😥

제가 이해한게 맞는지, 틀린 부분있다면 말씀해주시면 감사하겠습니다!!

답변 1

답변을 작성해보세요.

0

안녕하세요 이정환입니다.

  1. 넵 맞습니다. 부모 컴포넌트가 리렌더되어 따라 리렌더 되어야 할 때에도 혹은 다른 State가 변경되어 리렌더가 발생할 때에도 컴포넌트의 State의 값은 유지됩니다. 그리고 이것은 클로저를 이용해 구현된 기능이 맞습니다.관련되어 더 자세한 설명을 확인하실 수 있는 링크를 남겨드립니다.

https://seokzin.tistory.com/entry/React-useState%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC%EC%99%80-%ED%81%B4%EB%A1%9C%EC%A0%80

 

  1. 함수형 업데이트란 setState 함수의 인수로 새로운 State의 값을 전달하는게 아닌, 콜백 함수를 전달하는 방식입니다. 예를 들면 다음과 같습니다.

// 일반 업데이트
setState(state + 1);

// 함수형 업데이트
setState((state)=> state + 1);

이때 함수형 업데이트에 전달하는 콜백함수는 setState로 부터 호출되면서 최신 State 값을 매개변수로 전달받습니다. 따라서 useCallback이나 useMemo 등에 묶여 최신 State 값을 참조할 수 없는 상황에 함수형 업데이트를 사용하면 좋습니다.

 

감사합니다

새해복 많이 받으세요 🙇‍♂

cccho님의 프로필

cccho

질문자

2024.01.11

답변 감사합니다. 이해했습니다!

새해 복 많이 받으세요😀