分隔內(nèi)容上有關(guān)聯(lián)但屬于不同類別的數(shù)據(jù)集合。
基礎(chǔ)的、簡(jiǎn)潔的標(biāo)簽頁(yè)。
Tabs 組件提供了選項(xiàng)卡功能,默認(rèn)選中第一個(gè)標(biāo)簽頁(yè),你也可以通過(guò) value
屬性來(lái)指定當(dāng)前選中的標(biāo)簽頁(yè)。
render() {
return (
<Tabs activeName="2" onTabClick={ (tab) => console.log(tab.props.name) }>
<Tabs.Pane label="用戶管理" name="1">用戶管理</Tabs.Pane>
<Tabs.Pane label="配置管理" name="2">配置管理</Tabs.Pane>
<Tabs.Pane label="角色管理" name="3">角色管理</Tabs.Pane>
<Tabs.Pane label="定時(shí)補(bǔ)償任務(wù)" name="4">定時(shí)補(bǔ)償任務(wù)</Tabs.Pane>
</Tabs>
)
}
選項(xiàng)卡樣式的標(biāo)簽頁(yè)。
只需要設(shè)置 type
屬性為 card
就可以使選項(xiàng)卡改變?yōu)闃?biāo)簽風(fēng)格。
render() {
return (
<Tabs type="card" value="1">
<Tabs.Pane label="用戶管理" name="1">用戶管理</Tabs.Pane>
<Tabs.Pane label="配置管理" name="2">配置管理</Tabs.Pane>
<Tabs.Pane label="角色管理" name="3">角色管理</Tabs.Pane>
<Tabs.Pane label="定時(shí)補(bǔ)償任務(wù)" name="4">定時(shí)補(bǔ)償任務(wù)</Tabs.Pane>
</Tabs>
)
}
可以關(guān)閉標(biāo)簽頁(yè)。
通過(guò)設(shè)置 closable
屬性來(lái)打開 Tabs
的可關(guān)閉標(biāo)簽效果, closable
也可以設(shè)置在 Tab Panel
中實(shí)現(xiàn)部分標(biāo)簽頁(yè)的可關(guān)閉效果。
render() {
return (
<Tabs type="card" closable activeName="1" onTabRemove={ (tab) => console.log(tab.props.name) }>
<Tabs.Pane label="用戶管理" name="1">用戶管理</Tabs.Pane>
<Tabs.Pane label="配置管理" name="2">配置管理</Tabs.Pane>
<Tabs.Pane label="角色管理" name="3">角色管理</Tabs.Pane>
<Tabs.Pane label="定時(shí)補(bǔ)償任務(wù)" name="4">定時(shí)補(bǔ)償任務(wù)</Tabs.Pane>
</Tabs>
)
}
卡片化的標(biāo)簽頁(yè)。
將type
設(shè)置為border-card
。
render() {
return (
<Tabs type="border-card" activeName="1">
<Tabs.Pane label="用戶管理" name="1">用戶管理</Tabs.Pane>
<Tabs.Pane label="配置管理" name="2">配置管理</Tabs.Pane>
<Tabs.Pane label="角色管理" name="3">角色管理</Tabs.Pane>
<Tabs.Pane label="定時(shí)補(bǔ)償任務(wù)" name="4">定時(shí)補(bǔ)償任務(wù)</Tabs.Pane>
</Tabs>
)
}
可以通過(guò) node 類型來(lái)實(shí)現(xiàn)自定義標(biāo)簽頁(yè)的內(nèi)容。
render() {
const label = <span><Icon name="date" /> 用戶管理</span>
return (
<Tabs type="border-card" activeName="1">
<Tabs.Pane label={label} name="1">用戶管理</Tabs.Pane>
<Tabs.Pane label="配置管理" name="2">配置管理</Tabs.Pane>
<Tabs.Pane label="角色管理" name="3">角色管理</Tabs.Pane>
<Tabs.Pane label="定時(shí)補(bǔ)償任務(wù)" name="4">定時(shí)補(bǔ)償任務(wù)</Tabs.Pane>
</Tabs>
)
}
增減標(biāo)簽頁(yè)按鈕只能在選項(xiàng)卡樣式的標(biāo)簽頁(yè)下使用
constructor() {
super();
this.state = {
tabs: [{
title: 'Tab 1',
name: 'Tab 1',
content: 'Tab 1 content',
}, {
title: 'Tab 2',
name: 'Tab 2',
content: 'Tab 2 content',
}],
tabIndex: 2,
}
}
editTab(action, tab) {
if (action === 'add') {
const { tabs, tabIndex } = this.state;
const index = tabIndex + 1;
tabs.push({
title: 'new Tab',
name: 'Tab ' + index,
content: 'new Tab content',
});
this.setState({
tabs,
tabIndex: index,
});
}
if (action === 'remove') {
const { tabs } = this.state;
console.log(action, tab);
tabs.splice(tab.key.replace(/^\.\$/, ''), 1);
this.setState({
tabs,
});
}
}
render() {
return (
<Tabs type="card" value="Tab 2" editable onTabEdit={(action, tab) => this.editTab(action, tab)}>
{
this.state.tabs.map((item, index) => {
return <Tabs.Pane key={index} closable label={item.title} name={item.name}>{item.content}</Tabs.Pane>
})
}
</Tabs>
)
}
constructor() {
super();
this.state = {
tabs: [{
title: 'Tab 1',
name: 'Tab 1',
content: 'Tab 1 content',
}, {
title: 'Tab 2',
name: 'Tab 2',
content: 'Tab 2 content',
}],
tabIndex: 2,
}
}
addTab() {
const { tabs, tabIndex } = this.state;
const index = tabIndex + 1;
tabs.push({
title: 'new Tab',
name: 'Tab ' + index,
content: 'new Tab content',
});
this.setState({
tabs,
tabIndex: index,
});
}
removeTab(tab) {
const { tabs, tabIndex } = this.state;
tabs.splice(tab.key.replace(/^\.\$/, ''), 1);
this.setState({
tabs,
});
}
render() {
return (
<div>
<div style={{marginBottom: '20px'}}>
<Button size="small" onClick={() => this.addTab()}>add tab</Button>
</div>
<Tabs type="card" value="Tab 2" onTabRemove={(tab) => this.removeTab(tab)}>
{
this.state.tabs.map((item, index) => {
return <Tabs.Pane key={index} closable label={item.title} name={item.name}>{item.content}</Tabs.Pane>
})
}
</Tabs>
</div>
)
}
參數(shù) | 說(shuō)明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
type | 風(fēng)格類型 | string | card, border-card | — |
closable | 標(biāo)簽是否可關(guān)閉 | boolean | - | false |
addable | 標(biāo)簽是否可增加 | boolean | - | false |
editable | 標(biāo)簽是否同時(shí)可增加和關(guān)閉 | boolean | - | false |
activeName | 選中選項(xiàng)卡的 name | string | — | 第一個(gè)選項(xiàng)卡的 name |
value | 綁定值,選中選項(xiàng)卡的name | string | — | 第一個(gè)選項(xiàng)卡的 name |
事件名稱 | 說(shuō)明 | 回調(diào)參數(shù) |
---|---|---|
onTabClick | tab 被選中時(shí)觸發(fā) | 被選中的標(biāo)簽 tab 實(shí)例 |
onTabRemove | 點(diǎn)擊 tab 移除按鈕后觸發(fā) | 被刪除的標(biāo)簽的 name |
onTabAdd | 點(diǎn)擊 tabs 的新增按鈕后觸發(fā) | - |
onTabEdit | 點(diǎn)擊 tabs 的新增按鈕或 tab 被關(guān)閉后觸發(fā) | (targetName, action) |
參數(shù) | 說(shuō)明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
label | 選項(xiàng)卡標(biāo)題 | string,node | — | — |
disabled | 是否禁用 | boolean | — | false |
name | 與選項(xiàng)卡 activeName 對(duì)應(yīng)的標(biāo)識(shí)符,表示選項(xiàng)卡別名 | string | — | 該選項(xiàng)卡在選項(xiàng)卡列表中的順序值,如第一個(gè)選項(xiàng)卡則為'1' |
closable | 標(biāo)簽是否可關(guān)閉 | boolean | — | false |
更多建議: