forked from nixcn/nixcn-cms
@@ -23,10 +23,12 @@ import {
|
|||||||
useSidebar,
|
useSidebar,
|
||||||
} from '@/components/ui/sidebar';
|
} from '@/components/ui/sidebar';
|
||||||
import { useUserInfo } from '@/hooks/data/useUserInfo';
|
import { useUserInfo } from '@/hooks/data/useUserInfo';
|
||||||
|
import { useLogout } from '@/hooks/useLogout';
|
||||||
|
|
||||||
export function NavUser() {
|
export function NavUser() {
|
||||||
const { isMobile } = useSidebar();
|
const { isMobile } = useSidebar();
|
||||||
const { data: user } = useUserInfo();
|
const { data: user } = useUserInfo();
|
||||||
|
const { logout } = useLogout();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SidebarMenu>
|
<SidebarMenu>
|
||||||
@@ -71,7 +73,7 @@ export function NavUser() {
|
|||||||
</div>
|
</div>
|
||||||
</DropdownMenuLabel>
|
</DropdownMenuLabel>
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
<DropdownMenuItem>
|
<DropdownMenuItem onClick={logout}>
|
||||||
<IconLogout />
|
<IconLogout />
|
||||||
登出
|
登出
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
|
|||||||
14
client/src/hooks/useLogout.ts
Normal file
14
client/src/hooks/useLogout.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { useNavigate } from '@tanstack/react-router';
|
||||||
|
import { useCallback } from 'react';
|
||||||
|
import { removeToken } from '@/lib/token';
|
||||||
|
|
||||||
|
export function useLogout() {
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
|
const logout = useCallback(() => {
|
||||||
|
removeToken();
|
||||||
|
void navigate({ to: '/login' });
|
||||||
|
}, [navigate]);
|
||||||
|
|
||||||
|
return { logout };
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user