코드 리뷰 세션 특강

박경준·2021년 7월 24일
0

state를 모두 나눠두면 코드를 작성할때 힘들기때문에 묶을수 있는건 묶어서 쓰자

같은 팀원의 파일 형태는 모두 같아야 한다. 빈 파일에 템플릿 형태를 정해두고 참고하면서 프로젝트를 진행해보자.

디버깅에 사용하는 console.log 내용이 개발환경에서만 동작하도록 하자.
프로덕션에서 데이터를 절대! 보여줘서는 안된다... 큰일난다...

함께 일하는 사람, 포트폴리오를 읽는 면접자를 이해시켜줄수 있는 내용이 주석으로 들어가면 좋다.

interceptors 객체를 활용해서 요청이 수행되기 직전에 가로채서 필요한 정보를 검사하거나 갈아끼워주자. 더불어 모듈화에 익숙해지면 axios를 함수화해보자. instance를 만드는 함수를 만들어서 파라미터에 원하는 값을 넣고 매번 변형된 axios를 return 해주자.

dom에 직접 접근하면 타이밍 문제가 생길수 있다. jsx를 html로 재해석하는 react의 특성 상 dom을 읽는 타이밍과 생성 타이밍이 엇갈릴수 있다.

immer를 쓸거면 스프레드 문법은 쓰지 말자. 스프레드 안쓰려고 immer 쓰는거니까!

QnA

state가 변경되어서 컴포넌트가 렌더링될 때 컴포넌트의 모든 부분이 리렌더링되는 것인지 state를 사용하는 부분만 리렌더링되는 것인지 궁금합니다

모든 컴포넌트가 리렌더링 된다. 하지만 memoization을 사용했을때에는 memo가 된 컴포넌트는 state가 변경되지 않았다면 리렌더링되지 않는다.

제가 삭제 기능을 구현할 때, 삭제를 하고 push.goBack() 하는 경우가 있었습니다. 그래서 delete에 대한 리듀서 처리를 하지 않았는데 (왜냐하면, 삭제를 하고 화면이 전환되면서 useEffect로 다시 postList를 불러왔기때문에 별도의 새로고침 없이도 상태값이 반영되었기 때문입니다.) 이렇게 겉으로 보기에 굳이 할 필요가 없다면 리듀서에서 delete 에 대한 new State를 return 하지 않아도 될까요?

적어주지 않아도 좋지만 컨벤션이 적어주는거라면 반드시 적어주자.

여려 사용자가 리덕스에 보관된 데이터를 이용해 CRUD를 하다보면, DB에 있는 데이터가 일치하지 않을 수 있을텐데, 언제 DB와 동기화를 해야하나요?

실시간 통신을 하고있다면 그에 맞춰서 프론트에서도 DB를 새로 불러와줘야하지만, 그렇지 않다면 새롭게 CRUD된 데이터를 갱신해줄 필요가 없다.

profile
빠굥

0개의 댓글