Skip to content

Commit d566b65

Browse files
refactor: use a usememo instead of of useeffect and usestate
1 parent a4746b5 commit d566b65

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

src/components/badges/Duration.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const DurationCard = ({ value, type = "gray" }: { value: number, type?: s
99
if (!value) {
1010
return 0;
1111
}
12-
if (Number(value) !== value) return value
12+
if (isNaN(Number(value))) return value
1313
return DateManager.humanize(value, router.locale as string);
1414
}, [router.locale, value]);
1515

src/components/cards/LearningModule.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Fragment, useEffect, useState } from "react";
1+
import { Fragment, useMemo } from "react";
22
import ArrowButton from "@/components/ui/button/Arrow";
33
import Link from "next/link";
44
import { useTranslation } from "next-i18next";
@@ -16,18 +16,16 @@ import { LearningModule } from "@/types/course";
1616
* Component that displays related learning material with a title, description, and "Start now" button.
1717
*/
1818
export function LearningModuleCard({ data }: { data: LearningModule }): JSX.Element {
19-
const [level, setLevel] = useState("");
2019
const { t } = useTranslation()
2120
const { challenge, community, colors } = useMultiSelector<any, any>({
2221
challenge: (state: IRootState) => state.challenges.current,
2322
community: (state: IRootState) => state.communities.current,
2423
colors: (state: IRootState) => state.ui.colors
2524
})
2625

27-
useEffect(() => {
28-
if (!challenge?.level) return
29-
if (challenge.level === 0 || challenge.level === 1) return setLevel("course.challenge.level-0");
30-
return setLevel("course.challenge.level-2");
26+
const level = useMemo(() => {
27+
const value = challenge?.level;
28+
return t((value === 0 || value === 1) ? "course.challenge.level-0" : "course.challenge.level-2");
3129
}, [challenge?.level]);
3230

3331
const courses = data?.courses.map(course => ({ name: course.name, slug: course.slug }))
@@ -40,7 +38,7 @@ export function LearningModuleCard({ data }: { data: LearningModule }): JSX.Elem
4038
<span className="uppercase font-semibold">{t("communities.card.module")}</span>
4139
</div>
4240
<div className="gap-2 flex items-center">
43-
<Tag className="uppercase">{t(level)}</Tag>
41+
{challenge.level && <Tag className="uppercase">{level}</Tag>}
4442
<DurationCard value={data.duration} type="bordered" />
4543
</div>
4644
</div>

0 commit comments

Comments
 (0)