好的,对于想要制作侧边栏的人来说,不幸的是,你必须自己制作。
我所做的是以下内容:
我的Dashboard.css文件里有以下内容。
import React from "react"; import {Nav} from "react-bootstrap"; import { withRouter } from "react-router"; import '../pages/style/Dashboard.css' const Side = props => { return ( <> <Nav className="col-md-12 d-none d-md-block bg-light sidebar" activeKey="/home" onSelect={selectedKey => alert(`selected ${selectedKey}`)} > <div className="sidebar-sticky"></div> <Nav.Item> <Nav.Link href="/home">Active</Nav.Link> </Nav.Item> <Nav.Item> <Nav.Link eventKey="link-1">Link</Nav.Link> </Nav.Item> <Nav.Item> <Nav.Link eventKey="link-2">Link</Nav.Link> </Nav.Item> <Nav.Item> <Nav.Link eventKey="disabled" disabled> Disabled </Nav.Link> </Nav.Item> </Nav> </> ); }; const Sidebar = withRouter(Side); export default Sidebar
然后完成最后一步,在您想要显示文件的文件中执行以下操作。
.sidebar { position: fixed; top: 0; bottom: 0; left: 0; min-height: 100vh !important; z-index: 100; padding: 48px 0 0; box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); } #sidebar-wrapper{ min-height: 100vh !important; width: 100vw; margin-left: -1rem; -webkit-transition: margin .25s ease-out; -moz-transition: margin .25s ease-out; -o-transition: margin .25s ease-out; transition: margin .25s ease-out; } #sidebar-wrapper .sidebar-heading { padding: 0.875rem 1.25rem; font-size: 1.2rem; } #page-content-wrapper { min-width: 0; width: 100%; }
import React from "react"; import {Container, Row, Col, Card, Form, Button } from "react-bootstrap"; import { withRouter } from "react-router"; import Sidebar from "../moduls/sidebar.js"; import './style/Dashboard.css' const Dash = props => { return ( <> <Container fluid> <Row> <Col xs={2} id="sidebar-wrapper"> <Sidebar /> </Col> <Col xs={10} id="page-content-wrapper"> this is a test </Col> </Row> </Container> </> ); }; const Dashboard = withRouter(Dash); export default Dashboard
react-bootstrap-sidebar-menu
。这是目前最干净、非常可定制的解决方案。
import SidebarMenu from 'react-bootstrap-sidebar-menu';
<SidebarMenu>
<SidebarMenu.Header>
<SidebarMenu.Brand>
{/* Your brand icon */}
</SidebarMenu.Brand>
<SidebarMenu.Toggle />
</SidebarMenu.Header>
<SidebarMenu.Body>
<SidebarMenu.Nav>
<SidebarMenu.Nav.Link>
<SidebarMenu.Nav.Icon>
{/* Menu item icon */}
</SidebarMenu.Nav.Icon>
<SidebarMenu.Nav.Title>
{/* Menu item title */}
</SidebarMenu.Nav.Title>
</SidebarMenu.Nav.Link>
<SidebarMenu.Nav/>
<SidebarMenu.Sub>
<SidebarMenu.Sub.Toggle>
<SidebarMenu.Nav.Icon />
<SidebarMenu.Nav.Title>
{/* Submenu title */}
</SidebarMenu.Nav.Title>
</SidebarMenu.Sub.Toggle>
<SidebarMenu.Sub.Collapse>
<SidebarMenu.Nav>
<SidebarMenu.Nav.Link>
<SidebarMenu.Nav.Icon>
{/* Submenu item icon */}
</SidebarMenu.Nav.Icon>
<SidebarMenu.Nav.Title>
{/* Submenu item title */}
</SidebarMenu.Nav.Title>
</SidebarMenu.Nav.Link>
</SidebarMenu.Nav>
</SidebarMenu.Sub.Collapse>
</SidebarMenu.Sub>
<SidebarMenu.Body/>
</SidebarMenu>
const Sidebar=()=>{
return (
<div style={{display:'flex', height:'100%', overflow:'scroll initial'}}>
<CDBSidebar textColer="#fff" backgroundColor="rgb(37, 90, 122)">
<CDBSidebarHeader prefix={<i className="fa fa-bars fa-large"></i>}>
<Link to="/dashboard">Dashboard</Link>
</CDBSidebarHeader>
<CDBSidebarContent className="sidebar-content">
<CDBSidebarMenu>
<NavLink exact to="/dashboard" activeClassName="activeClicked">
<CDBSidebarMenuItem icon="columns">
Transfer
</CDBSidebarMenuItem>
</NavLink>
<NavLink exact to="/dashboard" activeClassName="activeClicked">
<CDBSidebarMenuItem icon="columns">
Transfer
</CDBSidebarMenuItem>
</NavLink>
<NavLink exact to="/dashboard" activeClassName="activeClicked">
<CDBSidebarMenuItem icon="columns">
Transfer
</CDBSidebarMenuItem>
</NavLink>
<NavLink exact to="/dashboard" activeClassName="activeClicked">
<CDBSidebarMenuItem icon="columns">
Transfer
</CDBSidebarMenuItem>
</NavLink>
</CDBSidebarMenu>
</CDBSidebarContent>
<CDBSidebarFooter style={{textAlign:'center'}}>
<div className="sidebar-btn-wrapper" style={{ padding :'20px 5px' }}>
sidebar footer
</div>
</CDBSidebarFooter>
</CDBSidebar>
</div>
)
}
export default Sidebar;
您也可以按照这里的指南进行操作https://dev.to/devwares/how-to-create-a-responsive-sidebar-in-react-using-bootstrap-and-contrast-5gi2,点击此链接查看。
react-bootstrap-drawer
的库,它提供了一个侧边栏/抽屉,直接从react-bootstrap
文档中获取。奇怪的是,这不是该库本身提供的组件,因此必须使用第三方库。import 'react-bootstrap-drawer/lib/style.css';
import React, { useState } from 'react';
import {
Col,
Collapse,
Container,
Row,
} from 'react-bootstrap';
import { Drawer, } from 'react-bootstrap-drawer';
const ApplicationDrawer = (props) => {
const [open, setOpen] = useState(false);
const handleToggle = () => setOpen(!open);
return (
<Drawer { ...props }>
<Drawer.Toggle onClick={ handleToggle } />
<Collapse in={ open }>
<Drawer.Overflow>
<Drawer.ToC>
<Drawer.Header href="/">Application</Drawer.Header>
<Drawer.Nav>
<Drawer.Item href="/settings">Settings</Drawer.Item>
</Drawer.Nav>
</Drawer.ToC>
</Drawer.Overflow>
</Collapse>
</Drawer>
);
};
const Application = (props) => {
return (
<Container fluid>
<Row className="flex-xl-nowrap">
<Col as={ ApplicationDrawer } xs={ 12 } md={ 3 } lg={ 2 } />
<Col xs={ 12 } md={ 9 } lg={ 10 }>{ props.children }</Col>
</Row>
</Container>
);
};
可以使用纯React-Bootstrap来完成。诀窍是使用折叠功能实现下拉菜单和使用组合
侧边栏
const SideBar = ({children}) => {
return <Nav className={'flex-column'}>{children}</Nav>
}
SideBar.Dropdown = SideBarDropdown
SideBar.Item = SideBarItem
export default SideBar
侧边栏下拉菜单(注意折叠)
const SideBarDropdown = ({title, children}) => {
const [open, setOpen] = useState(false);
return (
<Container fluid className={'p-0 m-0'}>
<Nav.Item onClick={() => setOpen(!open)} className={'p-0 m-0'}>
{/*Your Dropdown Text*/}
</Nav.Item>
<Collapse in={open}>
<div> {children} </div>
</Collapse>
</Container>
)
}
export default SideBarDropdown
边栏项
const SideBarItem = ({title, value, onClick}) => {
return (
<Container fluid className={'p-0 m-0'}>
<Nav.Item onClick={onClick} className={'p-0 m-0'}>
{/*Your Dropdown Text*/}
</Nav.Item>
</Container>
)
}
export default SideBarItem
示例用例
const ToolsSidebar = ({ setCurrentTool, currentTool }: SideNavProps) => {
return (
<SideBar>
<SideBar.Dropdown title={'Datasets'}>
<SideBar.Item title={'Files'} value={'some_files'} />
<SideBar.Item title={'Documents'} value={'something_else'} />
</SideBar.Dropdown>
<SideBar.Dropdown title={'Title1'}>
<SideBar.Item title={'Creator'} value={'some_writer'} />
<SideBar.Item title={'Components List'} value={'some_list'} />
</SideBar.Dropdown>
</SideBar>
)
}
export default ToolsSidebar
SideBar.Dropdown = SideBarDropdown
和SideBar.Item = SideBarItem
背后的原因吗? - Nashit ShayanSideBar.Dropdown = SideBarDropdown
和SideBar.Item = SideBarItem
背后的原因吗? - undefined