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

qkekvyqja님의 프로필 이미지
qkekvyqja

작성한 질문수

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

게시글 구현하기

liked나 commentFormOpened 토글시에

작성

·

203

0

liked나 commentFormOpened 토글시에

!liked나 !commentFormOpened 를 바로 안쓰고 prev를 받는 콜백으로 하는건 어떤 경우인지 알려주실 수 있으신가요-?

바로 값을 넣지 않고 콜백을 통해 가공하는 경우를 몇 번 본 것 같아서요..!

답변 2

0

qkekvyqja님의 프로필 이미지
qkekvyqja
질문자

답변 감사합니다!

객체나 배열등의 state를 변경할 때 이전 state와 독립적인 새로운 state를 만들기 위해 새로운 객체(배열)을 만들어서 setState하는 것처럼

!liked도 이전 state를 상태를 바꾸면서(혹은 영향을 주면서) 다음 state로 가는 것이라 콜백을 통해 새로운 값을 부여한다.

라는 맥락으로 이해해도 괜찮을까요?

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

대부분의 경우는 (prev) => !prev 대신 !liked처럼 해도 됩니다만

setState를 연달아 할 때 완전 결과가 달라집니다. 연달아 setState할 때는 반드시 콜백함수 방식으로 하셔야 합니다. react batched state로 검색해보시면 관련 이유를 알 수 있습니다.

0

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

이전 값 기반으로 바꿀 때는 콜백함수로 하는 게 좋습니다.

!liked 이런 건 버그가 날 수 있습니다.

qkekvyqja님의 프로필 이미지
qkekvyqja

작성한 질문수

질문하기