<aside>
🔃 나만의 일관된 코딩 규칙을 세우자!
개발할때 편리하기 위한 것보다 변경할때 편리하기
위한 컴포넌트를 작성하자
</aside>
로직을 컴포넌트로 부터 분리하기위해, 커스텀훅 뿐만 아니라 children props로 생각을 해보자 ⇒ <LoginContainer/>
: 로그인을 했을때 컴포넌트 렌더링 아니면 로그인 유도 컴포넌트
UI 위치 요소를 결정짓는 것은 UI 컴포넌트 밖의 Wrapper에서 결정 짓는다. UI가 자체 위치 정보를 갖지 않는다
비슷한 UI 처럼 보이지만, Single Source of Truth인 백엔드 데이터 스키마가 다르다면 다른 컴포넌트로 분리한다.
데이터가 똑같은데, 보여주는 View가 다르다고 하면 render props 패턴을 이용한다.
부모에서 바로 Map을 돌리지 않는다. 중간 컴포넌트에서 Map을 돌린다.
백엔드 DTO는 interface, 일반 타입은 type키워드 사용
UI 컴포넌트에서는 필요한 정보만 받는다 adapter를 만들어서, UI에 필요한 데이터만 싹 받는다. (고민 해봐야할듯?) 미션 카드 UI 참고
State로 카테고리에 따라 다른 UI를 보여줘야하는 widgets (url로 카테고리가 바뀌어야하는 것은 별도임)
컴포넌트에서 필요한것
errorboundary로 감싸면, reset을 해준다.
import { useQueryErrorResetBoundary } from '@tanstack/react-query'
import { ErrorBoundary } from 'react-error-boundary'
const App = () => {
const { reset } = useQueryErrorResetBoundary()
return (
<ErrorBoundary
onReset={reset}
fallbackRender={({ resetErrorBoundary }) => (
<div>
There was an error!
<Button onClick={() => resetErrorBoundary()}>Try again</Button>
</div>
)}
>
<Page />
</ErrorBoundary>
)
}
다양한 방법들중이 있는데, 저번에는 이렇게 했으니, 이번에는 이렇게 구현해볼까?