You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
help_admin/src/Main.tsx

90 lines
2.5 KiB

import React from "react";
import {Navbar,Nav,Button} from "react-bootstrap";
import {Manager} from "./Manager";
import {User} from "./User";
import {Active} from "./Active";
import {Cookies} from "react-cookie";
import {manager_cookie} from "./account/PropCookie";
import {fontEnd} from "./api";
/**
* 菜单标记
*/
enum Menu {
manager,
user,
active
}
/**
* 主菜单
*/
export class Main extends React.Component<
{
cookies:Cookies;
logout:Function;
},
{
menu:Menu;
subMenu:JSX.Element
}>{
constructor(props: Readonly<any>) {
super(props);
//默认菜单
this.state={
menu:Menu.manager,
subMenu:<Manager cookies={this.props.cookies}/>
}
}
//获取菜单名颜色
getMenuColor(menu:Menu){
return this.state.menu===menu?"black":"blue"
}
//切换菜单
changeMenu(menu:Menu){
this.setState({
menu:menu
})
switch (menu) {
case Menu.manager:
this.setState({
subMenu:<Manager cookies={this.props.cookies}/>
});break;
case Menu.user:
this.setState({
subMenu:<User/>
});break;
case Menu.active:
this.setState({
subMenu:<Active/>
});break;
}
}
render() {
return (
<div>
<Navbar bg="light">
<Nav className="mr-auto">
<Nav.Link style={{color:this.getMenuColor(Menu.manager)}} onClick={()=>this.changeMenu(Menu.manager)}></Nav.Link>
<Nav.Link style={{color:this.getMenuColor(Menu.user)}} onClick={()=>this.changeMenu(Menu.user)}></Nav.Link>
<Nav.Link style={{color:this.getMenuColor(Menu.active)}} onClick={()=>this.changeMenu(Menu.active)}></Nav.Link>
</Nav>
<Navbar.Text>
{this.props.cookies.get(manager_cookie)}
</Navbar.Text>
<Button variant="outline-info" className="ml-3" onClick={()=>window.location.href=fontEnd}></Button>
<Button variant="outline-primary" className="ml-3" onClick={()=>this.props.logout()}></Button>
</Navbar>
{this.state.subMenu}
</div>
)
}
}