improved project card efficiency

- improved badges rendering logic
This commit is contained in:
Kim, Jimin 2022-01-09 10:38:17 +09:00
parent 8349ae10b5
commit 9b2475ecf4

View file

@ -6,6 +6,7 @@ import Card from "../../components/Card"
import { PortfolioProject } from "../../../types/types"
import theming from "../../styles/theming"
import { useEffect, useState } from "react"
const StyledProjectCard = styled(Card)`
margin-bottom: 2rem;
@ -28,8 +29,15 @@ interface ProjectCardProps {
const ProjectCard = (props: ProjectCardProps) => {
const { projectID, project } = props
const [badges, setBadges] = useState<JSX.Element[]>([])
const navigate = useNavigate()
useEffect(() => {
setBadges(
project.badges.map((badge) => <Badge key={badge} slug={badge} />)
)
}, [])
return (
<StyledProjectCard
onClick={() => navigate(process.env.PUBLIC_URL + projectID)}
@ -37,9 +45,7 @@ const ProjectCard = (props: ProjectCardProps) => {
<h1>{project.name}</h1>
<StyledImg src={project.image} />
{project.badges.map((badge) => {
return <Badge key={badge} slug={badge} />
})}
{badges}
<hr />
<div dangerouslySetInnerHTML={{ __html: project.overview }} />
</StyledProjectCard>