From c6cd65991dc626c7d1848bc64abc088a5c13255b Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 20 Dec 2022 15:28:22 +0800 Subject: [PATCH] memo some components --- .../NavigationMenuGuideList.tsx | 2 +- .../NavigationMenuGuideListItems.tsx | 268 ++++++++++-------- 2 files changed, 151 insertions(+), 119 deletions(-) diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx index 2800ff25557..b0a5a9c78e1 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideList.tsx @@ -37,4 +37,4 @@ const NavigationMenuGuideList: React.FC = ({ id, active }) => { ) } -export default React.memo(NavigationMenuGuideList) +export default NavigationMenuGuideList diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideListItems.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideListItems.tsx index ebcc68d1a75..ffea5c51f8b 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideListItems.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuGuideListItems.tsx @@ -7,15 +7,155 @@ import { IconChevronLeft } from '~/../../packages/ui' import * as NavItems from './NavigationMenu.constants' import * as Accordion from '@radix-ui/react-accordion' -const Content = ({ id }) => { +interface ImPureProps { + // users: Array +} + +const HeaderImage = React.memo(function HeaderImage(props: any) { const router = useRouter() const { isDarkMode } = useTheme() + return ( + {props.icon} + ) +}) + +const HeaderLink = React.memo(function HeaderLink(props: any) { + const router = useRouter() + + return ( + + {props.title ?? props.id} + + ) +}) + +const ContentAccordionLink = React.memo(function ContentAccordionLink(props: any) { + const router = useRouter() + const { isDarkMode } = useTheme() + + let subItemMenuOpen = false + + if (router.asPath.includes(props.subItem.url)) { + subItemMenuOpen = true + } + + const LinkContainer = (props) => { + return ( + + {props.children} + + ) + } + + return ( + <> + {props.subItemIndex === 0 && ( + <> +
+ + {props.parent.name} + + + )} + +
  • + + {props.subItem.icon && ( + {props.subItem.name + )} + {props.subItem.name} + +
  • + + {props.subItem.items && props.subItem.items.length > 0 && ( + + {props.subItem.items.map((subSubItem) => { + return ( +
  • + + + {subSubItem.name} + + +
  • + ) + })} +
    + )} +
    + + ) +}) + +const ContentLink = React.memo(function ContentLink(props: any) { + const router = useRouter() + + return ( +
  • + + + {props.icon && } + {props.name} + + +
  • + ) +}) + +const Content = (props) => { + console.log(props.id, props) + const { id } = props + const menu = NavItems[id] return (
      - {console.log(id && 'GUIDE MENU id changed')} + {/* // */} + {console.log(id && `GUIDE MENU ${id} changed`)} + {/* // */} {
      - {menu.icon} - {/*
      */} - - {menu.title ?? id} - + +
      @@ -68,106 +189,17 @@ const Content = ({ id }) => { {x.items && x.items.length > 0 ? (
      {x.items.map((subItem, subItemIndex) => { - // console.log('subitem', { subItem }) - // console.log('router', router) - //console.log('subitem url', subItem.url) - let subItemMenuOpen = false - - if (router.asPath.includes(subItem.url)) { - subItemMenuOpen = true - } - - const LinkContainer = (props) => { - return ( - - {props.children} - - ) - } - return ( - <> - {subItemIndex === 0 && ( - <> -
      - - {x.name} - - - )} - -
    • - - {subItem.icon && ( - {subItem.name - )} - {subItem.name} - -
    • - - {subItem.items && subItem.items.length > 0 && ( - - {subItem.items.map((subSubItem, subSubItemIndex) => { - return ( -
    • - - - {subSubItem.name} - - -
    • - ) - })} -
      - )} -
      - + ) })}
      ) : ( - <> -
    • - - - {x.icon && } - {x.name} - - -
    • - + )} )