map 메서드로 렌더링 하는 법.. 타입스크립트 어렵다
부모 컴포넌트
Place
라는 인터페이스를 선언한다.
interface
는 객체의 속성이나 함수의 파라미터 등에 대해 정의할 때 많이 사용된다.
interface Place {
name: string;
addr: string;
}
Place
를 placeList
라는 Place
배열을 타입으로 갖는 PlacesProps
인터페이스를 선언했다.
interface PlacesProps {
placeList: Place[];
}
그리고 Places
컴포넌트를 선언하는데, 함수형 컴포넌트로 선언해주었고,
인자값으로 PlacesProps
를 받아 그 안의 속성인 placeList
를 비구조화 할당으로 꺼낸다.
placeList
는 배열이므로 map
을 이용해 반복하여 PlaceItem
컴포넌트를 렌더링 할 수 있다.PlaceItem
컴포넌트에 place
객체를 전달하는 데 한참이 걸렸다..
key는 일단 임의로 index값이 할당되도록 해주었다. 원래는 식별자(PK)같은 값을 할당하는 것이 좋다.
const Places = ({ placeList }: PlacesProps) => {
return (
<div>
{placeList.map((place, i:number) => (
<PlaceItem key={i} place={place} />
))}
</div>
);
};
export default Places;
아마 이대로만 하면 막 에러가 뿜어나올 것이다..
자식 컴포넌트
여기서도 똑같이 일단 props
를 정의하는 인터페이스를 선언해준다. key와 place를 받고있으므로 해당 값들로 속성을 정의한다.
interface PlaceProps {
place: {
name: string;
addr: string;
};
key: number;
}
아래는 똑같다.
const PlaceItem = ({ place, key }: PlaceProps) => {
return (
<div>
<p>{place.name}</p>
<p>{place.addr}</p>
</div>
);
};
export default PlaceItem;
타입스크립트가 너무 어려워서 여기까지만 하고,, 타입스크립트 공부를 하는게 낫다고 판단,,,, 난 야생형은 아닌것같다..^^...,,
'STUDY > React' 카테고리의 다른 글
React | JWT 안전하게 저장하기 (localStorage 사용 X) (2) (0) | 2021.05.28 |
---|---|
React | JWT 안전하게 저장하기 (localStorage 사용 X) (1) (3) | 2021.05.27 |
React | TypeScript로 시작하기 (0) | 2021.04.26 |
React | Recoil 겉핥기 (0) | 2021.04.01 |
React | Context API 알아보기 (0) | 2021.02.21 |