react state관리에 대한 고찰

pastaCoder·2022년 7월 29일
0

react의 버츄얼 돔에 대해 조금 더 생각을 해보던 도중에 이런생각이 들었다. 우선 react 버츄얼돔에 대해서 정리한글을 보자.

react 버츄얼 돔 해당 링크를 클릭하면 react 버츄얼 돔에 대한 설명을 볼 수 있다.

  1. 요약하자면 DOM에 직접적으로 수정을 하는게아니라 DOM을 복사한 가상돔을 만든다.
  2. 처음 가상DOM과 변경사항이 적용된 가상DOM을 비교한다.
  3. 변경된 부분을 적용한다.

이런식으로 흘러가며 동작하게된다. 근데 예전에 프로젝트할때 배열을 관리하기가 굉장히 어려웠던게 기억난다.
그 이유가 처음 개발을 할때, 난 당연히 push함수로 배열에 값을 추가해서 넣어줬는데 당시 두가지 문제가 있었다.

  1. 우선 push함수의 return값은 항목 추가시 배열의 길이라 setState 함수가 제대로 동작하지도 않았다.
  2. 강제로 넣어준 객체를 들고왔을때 수정은 되지만, state가 변해도 페이지가 리렌더링 되지 않았었다.

그래서 concat함수를 써서 배열의 불변성을 유지하며 배열을 변경했었는데, 그때는 솔직히 실력도 부족하고 읽어봐도 뭔소린지 잘 모르겠어서 일단 동작이 되는대로 열심히 만들었었다. 그런데 그와 관련해서 오늘 궁금한점이 생겼다.

궁금한 부분은 이렇다.

상황: react게시판에서 글을 추가한다. 추가된 글의 정보를 백엔드로 보낸다. 이후 자동적으로 게시판 글이 추가되어야한다.

위의 상황을 어떻게 구현할 수 있을까? 두가지 방법이 있을것같다.

  1. API가 추가 후 추가된 글의 정보를 반환한다면, state에 해당부분을 추가해준다.
  2. 글의 정보를 API로 전송 후 API에서 전체 데이터 조회를 하여 state를 새로 만들어준다.

근데 이 두가지 방법중 첫번째 관리의 불변성 관리가 너무 까다롭다는 생각이 들었다.

실제로 그 방법을 어떻게 구현하나 골똘히 고민해보다가 아래 블로그를 찾았다. 이후에 예제도 만들어볼 예정이다.

https://kyounghwan01.github.io/blog/React/immer-js/#immer-js%E1%84%85%E1%85%A1%E1%86%AB

0개의 댓글