ant-design/components/tabs/demo/extra.md

89 lines
1.8 KiB
Markdown
Raw Normal View History

2016-03-31 09:40:55 +08:00
---
order: 4
2017-02-04 01:13:35 +08:00
title:
zh-CN: 附加内容
en-US: Extra content
2016-03-31 09:40:55 +08:00
---
2015-12-14 22:16:25 +08:00
2016-08-03 10:39:20 +08:00
## zh-CN
可以在页签两边添加附加操作。
2015-12-14 22:16:25 +08:00
2016-08-03 10:39:20 +08:00
## en-US
You can add extra actions to the right or left or even both side of Tabs.
2016-08-03 10:39:20 +08:00
```tsx
2022-05-23 14:37:16 +08:00
import { Button, Checkbox, Divider, Tabs } from 'antd';
import React, { useMemo, useState } from 'react';
2018-06-27 15:55:04 +08:00
const CheckboxGroup = Checkbox.Group;
2016-08-03 10:39:20 +08:00
const operations = <Button>Extra Action</Button>;
2015-12-14 22:16:25 +08:00
const OperationsSlot: Record<PositionType, React.ReactNode> = {
2020-09-30 17:08:39 +08:00
left: <Button className="tabs-extra-demo-button">Left Extra Action</Button>,
right: <Button>Right Extra Action</Button>,
};
const options = ['left', 'right'];
type PositionType = 'left' | 'right';
const items = new Array(3).fill(null).map((_, i) => {
const id = String(i + 1);
return {
label: `Tab ${id}`,
key: id,
children: `Content of tab ${id}`,
};
});
const App: React.FC = () => {
const [position, setPosition] = useState<PositionType[]>(['left', 'right']);
const slot = useMemo(() => {
if (position.length === 0) return null;
return position.reduce(
(acc, direction) => ({ ...acc, [direction]: OperationsSlot[direction] }),
{},
);
}, [position]);
return (
<>
<Tabs tabBarExtraContent={operations} items={items} />
<br />
<br />
<br />
<div>You can also specify its direction or both side</div>
<Divider />
<CheckboxGroup
options={options}
value={position}
onChange={value => {
setPosition(value as PositionType[]);
}}
/>
<br />
<br />
<Tabs tabBarExtraContent={slot} items={items} />
</>
);
};
export default App;
2019-05-07 14:57:32 +08:00
```
2020-09-30 17:08:39 +08:00
```css
.tabs-extra-demo-button {
margin-right: 16px;
}
.ant-row-rtl .tabs-extra-demo-button {
margin-right: 0;
margin-left: 16px;
}
```