import React, { useContext, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { UserContext } from '../context/User'; import { Button, Container, Dropdown, Icon, Menu, Segment } from 'semantic-ui-react'; import { API, isAdmin, isMobile, showSuccess } from '../helpers'; import '../index.css'; // Header Buttons const headerButtons = [ { name: '首页', to: '/', icon: 'home', }, { name: '渠道', to: '/channel', icon: 'sitemap', admin: true, }, { name: '用户', to: '/user', icon: 'user', admin: true, }, { name: '设置', to: '/setting', icon: 'setting', }, { name: '关于', to: '/about', icon: 'info circle', }, ]; const Header = () => { const [userState, userDispatch] = useContext(UserContext); let navigate = useNavigate(); const [showSidebar, setShowSidebar] = useState(false); async function logout() { setShowSidebar(false); await API.get('/api/user/logout'); showSuccess('注销成功!'); userDispatch({ type: 'logout' }); localStorage.removeItem('user'); navigate('/login'); } const toggleSidebar = () => { setShowSidebar(!showSidebar); }; const renderButtons = (isMobile) => { return headerButtons.map((button) => { if (button.admin && !isAdmin()) return <>; if (isMobile) { return ( { navigate(button.to); setShowSidebar(false); }} > {button.name} ); } return ( {button.name} ); }); }; if (isMobile()) { return ( <> logo
One API
{showSidebar ? ( {renderButtons(true)} {userState.user ? ( ) : ( <> )} ) : ( <> )} ); } return ( <> logo
One API
{renderButtons(false)} {userState.user ? ( 注销 ) : ( )}
); }; export default Header;