리코일을 적용했던 미션이 끝난 후 제대로 다시 읽게된 리코일에 대해 정리한 글이다. 우선 한글로되어있어 처음 접하는 사람에게는 큰 도움이 될 글이다.
이번에 리코일을 적용해보면서 Atom의 default값을 줄때 단순한 형태 숫자, 빈 배열, 문자 형태로 주었는데, 다음엔 default값을 key:value형태로 사용해서 무분별하게 늘어난 atom을 정리해야겠다.
selector가 어렵게 느껴졌다. 그래서 미션 종료직전까지 셀렉터 사용을 미루다가 살짝 적용해보게 됬는데 사실 필수적인 기능은 아니었다. 개개인이 느끼기에 따라 다르겠지만 있어도, 없어도 된다. atom에서 관리하는 상태들을 변경하고 싶어지면 atom값을 불러와서 다른 외부함수에서 조작할수도 있으니까, 그런데 상태를 관리입장에서 selector로 정의해둔 atom과 함께 데이터를 가공 및 관리하는것이 더 효율적이라는 생각이 들었다. 무었보다도 상태파일을 분리하게 되니 컴포넌트 파일이 깔끔해졌다. 또한 외부함수로 사용할 때엔 함수에 필요한 값들을 인자로 전달해주어야 했는데 셀렉터를 사용하니 이미 그 안에 필요한 값이 정의되어있어 코드가 더욱 간단해지는 이점을 느낄 수 있었다.
atom의 기본값 : 정적, 프로미스, 리코일 벨류 사용가능
atom의 값으로 프로미스와 다른 리코일 밸류를 사용할 수 있다는게 신기!
생각보다 리코일 기능이 엄청 많았다. 다음 미션때에는 selector를 통해 데이터를 요청하고 suspense를 꼭 적용해봐야겠다.
최적화를 위해 useMemo, callback을 남발하는 것은 더 큰 비용을 양산함. 꼭 최적화가 필요한지 측정을 먼저한 후 잘 적용해야 한다.
기본적인 개념을 다루고 있는 글이다. 그래도 한번은 정확하게 정리하고 넘어가고싶었다. 이벤트 위임은 대충 그림은 그려졌는데 내용을 명확히 알지 못했던 것 같아 좋은 기회였다.
특히 이번 에어비앤비 미션에서 하나의 검색바에서 각 섹션들에 클릭 이벤트를 주어야 할 일이 있었는데, 현재는 작은 섹션마다 클릭이벤트가 걸려있다면, 반대로 검색바 전체 영역에서 이벤트 위임으로 이벤트를 전달했다면 코드중복을 피하고 (영향이 크지않지만)메모리누수가 좀 줄었겟지?
이 인터뷰는 경력자 입장에서 실무를 하며 경혐했던일, 문제 상황과 해결한 과정을 엿볼 수 있는데 나중에 이력서 쓰는데 참고가 될것 같다. 그리고 나도 작은 소스들이라도 매일 기록하자 TIL시작했으니께!
이슈트래커 미션 초반 리팩토링을 하면서 폴더구조를 고민하게 되었다. 페이지폴더와 컴포넌트 폴더를 분리하여 관리하다가 컴포넌트와 페이지간의 연관성을 확인하기가 어려운듯하여 페이지 폴더내부에 직접적으로 해당되는 컴포넌트를 저장하는 식으로 변경하였다. 폴더링에 대한 고민을 위 기사를 통해 도움받았다.결론적으로는 상황에 따라 (풀스택인지, 디자인구성요소를 중요하게 여기는지 등) 다양한 폴더링이 장단점을 갖는데, 우선 내 입장에서 좋은 폴더링은 누가보아도 컴포넌트의 구성과 내용을 폴더구조를 통해 어렵지 않게 파악할 수 있는 것이라고 생각한다.
최적화를 수업때 접하긴했는데 이렇게 실무에 직접 적용한 사례를 보니 굉장히 재밌었다. 이를 규모있는 프로젝트를 만들고 싶다는 욕구도 생겼다. (에어비앤비 클론은 서버가 아쉽게도 닫혔음...ㅠ) 그리고 cra가 아닌 정말 필요한 기능들만 가볍게 갖춘 웹팩설정을 공부해야겠다고 생각하게 됬다. 기존까지는 웹팩 어휴... 이랬다면 이젠 목적(가볍고 최적화된 앱을 만들기)이 생겼기 때문에 부담스럽지 않게되었다.