From a75ea92087c34ec16720d53f5de51f33770e2c9e Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sat, 24 Jul 2021 23:31:43 +0800 Subject: [PATCH] refactor: nav and sidebar active status --- .../Content/Personal/Friends/AddFriend.tsx | 2 +- web/src/routes/Main/Content/SidebarItem.tsx | 4 ++-- web/src/routes/Main/Navbar/GroupNav.tsx | 11 +-------- web/src/routes/Main/Navbar/NavItem.tsx | 23 ++++++++++++++++--- web/src/routes/Main/Navbar/index.tsx | 4 +--- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx b/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx index 7cad7b87..db0e49bd 100644 --- a/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx +++ b/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx @@ -82,7 +82,7 @@ const SelfIdentify: React.FC = React.memo(() => {
您的个人唯一标识
- + {uniqueName}
diff --git a/web/src/routes/Main/Content/SidebarItem.tsx b/web/src/routes/Main/Content/SidebarItem.tsx index 67d17979..d0ad91de 100644 --- a/web/src/routes/Main/Content/SidebarItem.tsx +++ b/web/src/routes/Main/Content/SidebarItem.tsx @@ -21,9 +21,9 @@ export const SidebarItem: React.FC = React.memo((props) => {
diff --git a/web/src/routes/Main/Navbar/GroupNav.tsx b/web/src/routes/Main/Navbar/GroupNav.tsx index c3d31ab5..73a8c4fd 100644 --- a/web/src/routes/Main/Navbar/GroupNav.tsx +++ b/web/src/routes/Main/Navbar/GroupNav.tsx @@ -3,7 +3,6 @@ import { openModal } from '@/components/Modal'; import { ModalCreateGroup } from '@/components/modals/CreateGroup'; import { Icon } from '@iconify/react'; import React, { useCallback, useMemo } from 'react'; -import { useHistory } from 'react-router'; import { GroupInfo, useAppSelector } from 'tailchat-shared'; import { NavbarNavItem } from './NavItem'; @@ -17,11 +16,6 @@ function useGroups(): GroupInfo[] { export const GroupNav: React.FC = React.memo(() => { const groups = useGroups(); - const history = useHistory(); - - const handleToGroup = useCallback((groupId: string) => { - history.push(`/main/group/${groupId}`); - }, []); const handleCreateGroup = useCallback(() => { openModal(); @@ -31,10 +25,7 @@ export const GroupNav: React.FC = React.memo(() => {
{Array.isArray(groups) && groups.map((group) => ( - handleToGroup(group._id)} - > + void; }> = React.memo((props) => { - return ( + const { className, to } = props; + const location = useLocation(); + const isActive = typeof to === 'string' && location.pathname.startsWith(to); + + const inner = (
{props.children}
); + + if (typeof to === 'string') { + return {inner}; + } + + return inner; }); NavbarNavItem.displayName = 'NavbarNavItem'; diff --git a/web/src/routes/Main/Navbar/index.tsx b/web/src/routes/Main/Navbar/index.tsx index 877e5ddc..6705705c 100644 --- a/web/src/routes/Main/Navbar/index.tsx +++ b/web/src/routes/Main/Navbar/index.tsx @@ -4,20 +4,18 @@ import { Icon } from '@iconify/react'; import { Avatar } from '@/components/Avatar'; import { NavbarNavItem } from './NavItem'; import { GroupNav } from './GroupNav'; -import { useHistory } from 'react-router'; /** * 导航栏组件 */ export const Navbar: React.FC = React.memo(() => { const userInfo = useAppSelector((state) => state.user.info); - const history = useHistory(); return (
{/* Navbar */}
- history.push('/main/personal')}> +