props으로 받아온 데이터 객체를 사용하기 쉽게 구조분해할당해준다.
useMemo와 useCallback도 적절하게 사용한다
const WaffleCard = ({
type,
cardData,
width,
height,
onClickCard,
onClickLikeIcon,
onClickFavoriteIcon,
...props
}) => {
const [ref, hover] = useHover();
const {
id = 'edit',
emoji = '🧇',
cardColor = Common.colors.yellow,
createdAt = new Date(),
favoriteToggle = false,
favoriteCount = 0,
likeToggle = false,
likeCount = 0,
hashTags = [],
} = cardData;
const days = useMemo(() => countDaysFromToday(createdAt), [createdAt]);
const handleClickCard = useCallback(
e => {
const cardId = e.target.closest('[data-id]').dataset.id;
onClickCard && onClickCard(cardId);
},
[onClickCard],
);
const handleClickLikeIcon = useCallback(
e => {
e.stopPropagation();
onClickLikeIcon && onClickLikeIcon(e);
},
[onClickLikeIcon],
);
const handleClickFavoriteIcon = useCallback(
e => {
e.stopPropagation();
onClickFavoriteIcon && onClickFavoriteIcon(e);
},
[onClickFavoriteIcon],
);
const Tag = block ? 'div':paragraph ? 'p':'span';
// 정해진 태그에 스타일 입히기
const StyledTag= styled(Tag)`
color: red;
`