refactor: memoize icons on export

This commit is contained in:
rusconn
2023-06-24 09:26:37 +09:00
parent 257080b00d
commit 240fba0e74
14 changed files with 74 additions and 101 deletions

View File

@@ -1,6 +1,6 @@
"use client";
import { useCallback, useMemo, useRef } from "react";
import { useCallback, useRef } from "react";
import { usePathname } from "next/navigation";
import * as Accordion from "@radix-ui/react-accordion";
@@ -20,11 +20,6 @@ export function ToolGroup({ Icon, title, href, tools, isOpend }: Props) {
const onClick = useCallback(() => triggerRef.current?.click(), []);
const chevronIcon = useMemo(
() => <icons.ChevronDown className="h-4 w-4 transition-transform duration-200" />,
[]
);
return (
<Accordion.AccordionItem value={href}>
<Accordion.Header asChild>
@@ -46,7 +41,7 @@ export function ToolGroup({ Icon, title, href, tools, isOpend }: Props) {
className="absolute right-0 flex h-10 w-10 items-center justify-center rounded transition-all duration-0 hover:bg-accent [&[data-state=open]>svg]:rotate-180"
aria-label="toggle open/close state of the tool group"
>
{chevronIcon}
<icons.ChevronDown className="h-4 w-4 transition-transform duration-200" />
</Accordion.Trigger>
</div>
</Accordion.Header>