TIL
24. 06. 27 TIL
효ㄷi
2024. 6. 27. 17:27
이번 타입스크립트 과제 정리!
const [countriesList, setCountriesList] = useState<CountriesType[]>([]);
먼저 state를 만든다.
api에 들어있는 데이터를 일단 쫙 가져와야 하는데 그걸 담는 state를 만들어줘야 한다.
그럼 그 api 데이터를 가져와야 하는데
여기서 좀 생각을 했다. 쿼리냐 이펙트냐. . .
찾아보니까 useEffect는 단순히 컴포넌트가 마운트 될 때 데이터를 가져오는 등의 작업을 처리할 때 사용하고, useQuery는 데이터 페칭, 캐싱, 로딩 상태 관리, 오류 처리 등을 쉽게 관리할 수 있도록 도와준다고 한다.
그래서 지금 상황에서는 서버에서 데이터를 가져오는 것이니까 useQuery가 더 적절한 느낌이었지만,,,
간단한 코드를 짜는 거라 그냥 useEffect를 쓰기로,,, (귀찮아서아님)
하여튼 그래서 useEffect를 작성해준다.
useEffect(() => {
const getApi = async () => {
const api = await countryApi();
return setCountriesList(api);
};
getApi();
}, []);
일단 async await 써준다.
async로 나라 목록 가져올 때까지 기다리라. . .
await로 기 다 려. . .
써주고 데이터가 왔다? api에 저장해준다.
그리고 setCountriesList에 api를 넣어준다.
그리고 getApi를 실해주면~
화면에 딱 뜬다.
그럼 이제 뭘 해줘야 한다?
뿌려줘야 한다...
{countriesList.map((country) => {
return (
<CountryCard
key={uuidv4()}
country={country}
selectedCardShow={selectedCardShow}
/>
);
})}
간단하게 countriesList를 map으로 돌려서 뿌려주면 되는데...!
CountryCard는 각 나라 정보를 화면에 카드 형태로 보여주는 컴포넌트다.
키는 uuid를 사용했고, country와 또 useState로 새롭게 만든 selectedCardShow라는 속성도 컴포넌트에 전달해준다/