https://ui.toast.com/weekly-pick/ko_20200623
필요 개념
여러응답 애러 다루기
API 호출이 외부 컴포넌트에서 온 경우
Redux - thunk, saga, observable 에서 온 데이터를 가지고 온 경우
기존
- 컴포넌트는 children 속성이 있고, JSX를 보통 받는다.
개선 테크닉
- React 컴포넌트 간에 코드를 공유하기 위해, props를 이용하는 간단한 테크닉이다.
<DataProvider render={(data) => <h1>Hello {data.target}</h1>} />
const Query = ({ url }) => {
const { data, statusCode } = useQuery({ url });
if (statusCode === 404) {
return <Page404 />;
}
// ... 등 여기서 여러 HTTP 응답 코드 처리
return children({ data });
};
<Query url={`https://dog.ceo/api/breed/${breed}/images/random`}>
{({ data }) => {
const imageSrc = get(data, "message");
return (
<div>
<div>
<Link to="/">back</Link>
</div>
{!imageSrc && <p>Loading...</p>}
{imageSrc && (
<img alt={`A nice ${breed}`} src={imageSrc} height={200} />
)}
</div>
);
}}
</Query>
1. 애러 상태를 관리하는 top-level component 를 만든다.
- 이 컴포넌트는 하위(깊숙한) 컴포넌트로 부터 현재의 애러상태를 보고 받을 수 있다.
- 현재 애러상태라면 , 애러 코드에 맞게 404,405,500 등의 페이지를 보여준다.
- 현재 애러상태가 아니라면, children 을 랜더링 한다.
2. 위 chilren 은 Router 및 Route 의 코드가 있다.
- url 정규식에서 일치하지 않을때 404페이지를 랜더링 되도록 해야함
- swith 컴포넌트 마지막에는 404 page 컴포넌트를 Route 해준다.
3. Query 관련 훅 만들기
- axios , fetch 든 데이터를 넘겨주기전에, 애러가 발생한다면
- 서버상태 애러를 관리하는 top-level component에게 보고해서
-랜더링 페이지를 애러상태코드로 바꾸도록 한다.