[React] setState는 동기함수인가? 에 대한 생각
·
Web/React.js
결론부터말하면 나는 react를 사용하는 개발자의 관점에서는 비동기함수라고 생각한다. 당연히 이렇게 생각하고 있었지만어디선가 setState는 동기함수지만 비동기함수처럼 동작한다. 라는 글을 보고 생각을 남긴다. 이 주장의 근거는 setState 함수는 변경하려는 값을 다른 함수에 위임하고 종료되니 동기함수다. 즉, state 변경을 예약하는 것으로 끝나니 동기함수다.하지만 state값이 즉시 변경되지 않고 react 렌더링 사이클에 따라 state 값이 업데이트 되므로 비동기함수처럼 동작한다. 이 주장이 틀렸다고 생각하지는 않는다.단지 추상화 수준과 관점의 차이라고 생각한다.이 주장은 react 자체를 개발하는 입장에서는 맞다고 생각하나react를 활용하여 개발하는 입장에서는 좋지 못한 주장이라 생각한..
React 렌더링과 커밋에 관한 오해에 대하여
·
Web/React.js
react에서의 렌더링에 대해 자세하게 설명하는 포스트는 아니고내가 잘못 이해하고 있던 부분에 대해 정리해볼까한다. React v18 기준 공식 문서에서는 다음의 용어를 아래와 같이 정의한다. 렌더링컴포넌트가 호출되는 것 커밋리액트가 Virtual DOM과 DOM을 비교하여 다른 부분을 반영하여 DOM을 업데이트 하는 것 브라우저 페인팅(렌더링)렌더링 -> react가 DOM 업데이트 -> 브라우저가 화면을 다시 그림(브라우저 렌더링)렌더링이라는 단어가 혼동을 일으키기 때문에 리액트에서는 "브라우저 페인팅"이라고 부름   잘못 이해하고 있던 부분부모 컴포넌트가 렌더링될 때, 자식 컴포넌트가 받는 props 값이 이전과 동일하면 자식 컴포넌트가 렌더링되지 않는다고 오해하고 있었다.예를 들어 아래 코드에서 ..