Skip to content

Commit 0e58c07

Browse files
committed
refactor: use useMemo instead if useEffect
1 parent 7311352 commit 0e58c07

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

src/components/badges/index.tsx

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Tag from "@/components/ui/Tag";
22
import { Challenge } from "@/types/course";
3-
import { useEffect, useState } from "react";
3+
import { useMemo } from "react";
44
import { useTranslation } from "react-i18next";
55

66
/**
@@ -19,20 +19,16 @@ interface BadgeProps {
1919
}
2020
export default function Badges({ challenge, className, courseLevel }: BadgeProps) {
2121
const { t } = useTranslation();
22-
const [challengeLevel, setChallengeLevel] = useState("");
2322

24-
const level = challenge?.level || courseLevel;
25-
26-
useEffect(() => {
27-
if (level === 0 || level === 1) return setChallengeLevel("course.challenge.level-0");
28-
return setChallengeLevel("course.challenge.level-2");
29-
}, [level]);
23+
const level = useMemo(() => {
24+
const value = challenge?.level || courseLevel;
25+
return (value === 0 || value === 1) ? "course.challenge.level-0" : "course.challenge.level-2";
26+
}, [challenge?.level, courseLevel]);
3027

3128
if (!level && !challenge?.isTeamChallenge) return <></>;
32-
3329
return (
3430
<div className={`uppercase flex flex-wrap gap-2 mb-3 ${className}`}>
35-
{level && <Tag>{t(challengeLevel)}</Tag>}
31+
{level && <Tag>{t(level)}</Tag>}
3632
{challenge?.isTeamChallenge && <Tag type="light">{challenge?.isHackathon ? "Hackathon" : "Team"} challenge</Tag>}
3733
</div>
3834
);

0 commit comments

Comments
 (0)