• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

liked나 commentFormOpened 토글시에

21.04.10 05:47 작성 조회수 137

0

liked나 commentFormOpened 토글시에

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

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

답변 2

·

답변을 작성해보세요.

0

qkekvyqja님의 프로필

qkekvyqja

질문자

2021.04.11

답변 감사합니다!

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

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

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

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

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

0

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

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