基本信息
源码名称:react+antd+mune+tab联动
源码大小:9.81KB
文件格式:.zip
开发语言:js
更新时间:2020-10-23
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
import React from 'react'
import { Layout, Menu,Tabs } from 'antd';
import { BrowserRouter as Router,Route,Link} from 'react-router-dom'
import './css/layout.css'
import Option1 from './components/option1'
import Option2 from './components/option2'
import Option3 from './components/option3'
var createHistory = require('history').createBrowserHistory
const history = createHistory()
const TabPane = Tabs.TabPane
const { Header, Content, Sider } = Layout;
class Layout1 extends React.Component{
constructor(props){
super(props)
this.newTabIndex = 0
const panes = []
const menuPanes=[
{ title:"tab1", content: Option1, key: "1",router:"/option1",nav:'option1'},
{ title:"tab2", content: Option2, key: "2",router:"/option2",nav:'option2'},
{ title:"tab3", content: Option3, key: "3",router:"/option3",nav:'option3'}
]
const selectedKey=""
this.state = {
activeKey: panes.length==0 ? '1':panes[0].key,
panes,
menuPanes,
selectedKey
}
}
handleClick(pane){
let panes = this.state.panes
let activeKey=pane.key
let flag=true
debugger
panes.length > 0 && panes.map((item,i)=>{
if(item.key == activeKey){
flag = false
}
})
if(!panes||panes.length===0||flag){
panes.push(pane)
}
let selectedKey=activeKey
this.setState({ panes, activeKey,selectedKey })
}
onChange = (activeKey) => {
const panes = this.state.panes
let router
panes.map((item,i)=>{
if(activeKey === item.key){
router = item.router
return false
}
})
history.push(router)
let selectedKey=activeKey
this.setState({selectedKey ,activeKey })
}
onEdit = (targetKey, action) => {
this[action](targetKey)
}
add = () => {
const panes = this.state.panes
const activeKey = `newTab${this.newTabIndex }`
panes.push({ title: 'New Tab', content: 'Content of new Tab', key: activeKey })
this.setState({ panes, activeKey })
}
remove = (targetKey) => {
debugger
let activeKey = this.state.activeKey
let lastIndex
this.state.panes.forEach((pane, i) => {
if (pane.key == targetKey) {
lastIndex = i - 1
}
})
const panes = this.state.panes.filter(pane => pane.key != targetKey);
if (lastIndex >= 0 && activeKey === targetKey) {
activeKey = panes[lastIndex].key
}
this.setState({ panes, activeKey })
}
render(){
return <Layout>
<Header className="header">
<div className="logo" />
<p style={{color:'white'}}>我是顶部通栏</p>
</Header>
<Router>
<Layout>
<Sider width={200} style={{ background: '#fff' }}>
<Menu
theme="dark"
mode="inline"
defaultSelectedKeys={['1']}
selectedKeys={[this.state.selectedKey]}
style={{ height: '100%', borderRight: 0 }}
>
{
this.state.menuPanes.map(item=>{
return <Menu.Item key={item.key}><Link to={item.router} onClick={()=>this.handleClick(item)}>{item.nav}</Link></Menu.Item>
})
}
</Menu>
</Sider>
<Layout style={{ padding: '0 24px 24px',margin: '0 0 10px', minHeight: 600 }} >
<Tabs
onChange={this.onChange.bind(this)}
activeKey={this.state.activeKey}
type="editable-card"
onEdit={this.onEdit}
>
{
this.state.panes && this.state.panes.map(pane => {
let Component = pane.content
return <TabPane tab={pane.title} key={pane.key} closable={pane.closable}>
<Component />
</TabPane>})
}
</Tabs>
</Layout>
</Layout>
</Router>
</Layout>
}
}
export default Layout1