localeCode: en-US order: 38 category: Navigation title: Breadcrumb subTitle: Breadcrumb icon: doc-breadcrumb
import { Breadcrumb } from '@douyinfe/semi-ui';
import React from 'react';
import { Breadcrumb } from '@douyinfe/semi-ui';
() => (
<Breadcrumb>
<Breadcrumb.Item>Semi-ui</Breadcrumb.Item>
<Breadcrumb.Item>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>Default</Breadcrumb.Item>
</Breadcrumb>
);
import React from 'react';
import { Breadcrumb } from '@douyinfe/semi-ui';
import { IconHome, IconArticle } from '@douyinfe/semi-icons';
() => (
<Breadcrumb>
<Breadcrumb.Item icon={<IconHome />}></Breadcrumb.Item>
<Breadcrumb.Item icon={<IconArticle />}>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>With Icon</Breadcrumb.Item>
</Breadcrumb>
);
You can set the compact property to false to increase the size of icons and texts.
import React from 'react';
import { Breadcrumb } from '@douyinfe/semi-ui';
import { IconHome } from '@douyinfe/semi-icons';
() => (
<div>
<Breadcrumb compact>
<Breadcrumb.Item icon={<IconHome />}></Breadcrumb.Item>
<Breadcrumb.Item>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>Loose</Breadcrumb.Item>
</Breadcrumb>
<br/>
<Breadcrumb compact={false}>
<Breadcrumb.Item icon={<IconHome />}></Breadcrumb.Item>
<Breadcrumb.Item>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>Loose</Breadcrumb.Item>
</Breadcrumb>
</div>
);
Default separator is /.
import React from 'react';
import { Breadcrumb, Tag } from '@douyinfe/semi-ui';
import { IconArrowRight } from '@douyinfe/semi-icons';
() => (
<div>
<Breadcrumb separator={'>'}>
<Breadcrumb.Item>Semi-ui</Breadcrumb.Item>
<Breadcrumb.Item>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>Default</Breadcrumb.Item>
</Breadcrumb>
<br/>
<Breadcrumb separator={<IconArrowRight size={'small'} />}>
<Breadcrumb.Item>Semi-ui</Breadcrumb.Item>
<Breadcrumb.Item>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>Default</Breadcrumb.Item>
</Breadcrumb>
<Tag>{`v>=1.16.0`}</Tag>
<br/>
<Breadcrumb size={'small'} >
<Breadcrumb.Item separator=":">Semi-ui</Breadcrumb.Item>
<Breadcrumb.Item>Breadcrumb</Breadcrumb.Item>
<Breadcrumb.Item>Default</Breadcrumb.Item>
</Breadcrumb>
</div>
);
After v0.34.0, the truncation happens if the text is overflowed. Default max-width is set to 150px. You could use showTooltip to customize ellipsis behavior.
import React from 'react';
import { Breadcrumb, Typography } from '@douyinfe/semi-ui';
() => {
const routes = ['Home', 'The is a very very very very long title', 'Detail'];
const { Text } = Typography;
return (
<>
<Text size="small">Default</Text>
<Breadcrumb
routes={routes}
/>
<br/>
<Text size="small">No tooltip</Text>
<Breadcrumb
showTooltip={false}
routes={routes}
/>
<br/>
<Text size="small">No truncation</Text>
<Breadcrumb
showTooltip={{width: 'auto'}}
routes={routes}
/>
<br/>
<Text size="small">Ellipsis from middle of text</Text>
<Breadcrumb
showTooltip={{ellipsisPos: 'middle'}}
routes={routes}
/>
<br/>
<Text size="small">Customize tooltip</Text>
<Breadcrumb
showTooltip={{opts: {position: 'topLeft'}}}
routes={routes}
/>
</>
);
};
When the path exceeds 4 levels, the second level to the penultimate one will be replaced by ellipsis. You can click the ellipsis to reveal all levels.
For v>=1.9.0 , you could use maxItemCount to set the number exceeded to trigger auto collapse.
import React from 'react';
import { Breadcrumb } from '@douyinfe/semi-ui';
() => (
<Breadcrumb>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Many levels</Breadcrumb.Item>
<Breadcrumb.Item>Another level</Breadcrumb.Item>
<Breadcrumb.Item>Another level again</Breadcrumb.Item>
<Breadcrumb.Item>Here is another one</Breadcrumb.Item>
<Breadcrumb.Item>Penultimate</Breadcrumb.Item>
<Breadcrumb.Item>Detail</Breadcrumb.Item>
</Breadcrumb>
);
There are two ellipsis area rendering types provided inside the component. You can set and select the desired rendering type through moreType. The optional values of moreType are default and popover.
import React from 'react';
import { Breadcrumb } from '@douyinfe/semi-ui';
() => (
<Breadcrumb moreType='popover'>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Many levels</Breadcrumb.Item>
<Breadcrumb.Item>Another level</Breadcrumb.Item>
<Breadcrumb.Item>Another level again</Breadcrumb.Item>
<Breadcrumb.Item>Here is another one</Breadcrumb.Item>
<Breadcrumb.Item>Penultimate</Breadcrumb.Item>
<Breadcrumb.Item>Detail</Breadcrumb.Item>
</Breadcrumb>
);
If you want to customize other forms of rendering for the ellipsis area, you can use the renderMore() method.
import React from 'react';
import { Breadcrumb, Popover } from '@douyinfe/semi-ui';
import { IconMore } from '@douyinfe/semi-icons';
function Demo() {
const separator = '-'; // Separator for splicing restItem array items
const renderMore = restItem => {
const content = (
<>
{
restItem.map((item, idx) => (
<React.Fragment key={`restItem-${idx}`}>
{item}
{idx !== restItem.length - 1 &&
<span style={{ color: 'var(--semi-color-text-2)', marginRight: '6px' }}>
{separator}
</span>
}
</React.Fragment>
))
}
</>
);
return (
<Popover
content={content}
style={{ padding: 12 }}
showArrow
>
<IconMore />
</Popover>
);
};
return (
<>
<Breadcrumb
renderMore={restItem => renderMore(restItem)}
onClick={(item, e) => console.log(item, e)}
>
<Breadcrumb.Item>Home</Breadcrumb.Item>
<Breadcrumb.Item>Many levels</Breadcrumb.Item>
<Breadcrumb.Item>Another level</Breadcrumb.Item>
<Breadcrumb.Item>Another level again</Breadcrumb.Item>
<Breadcrumb.Item>Here is another one</Breadcrumb.Item>
<Breadcrumb.Item>Penultimate</Breadcrumb.Item>
<Breadcrumb.Item>Detail</Breadcrumb.Item>
</Breadcrumb>
</>
);
}
Breadcrumb supports passing in an array of strings or route objects consisting of { name, path, href, icon }. You can also use renderItem to render React.nodes. Breadcrumbs created in this way will also be truncated.
name: Name displayed, default with an empty string. When route passed in is a string only, it is set to name property.path: Routing path.href: Link destination and is mounted on the <a> tag.icon: Icon displayed.
import React from 'react';
import { Breadcrumb } from '@douyinfe/semi-ui';
import { IconHome, IconArticle } from '@douyinfe/semi-icons';
() => (
<div>
<Breadcrumb
routes={['Semi-ui', 'Breadcrumb', 'Default']}
/>
<br/>
<Breadcrumb
routes={
[
{
path: '/',
Href: '/',
icon: <IconHome />
},
{
path: '/breadcrumb',
href: '/en-US/navigation/breadcrumb',
name: 'breadcrumb',
icon: <IconArticle />
},
'with icon'
]
}
/>
<br/>
<Breadcrumb
routes={['Index', 'This is a very long level', 'Detail']}
/>
</div>
);
| Properties | Instructions | type | Default | version |
|---|---|---|---|---|
| autoCollapse | Toggle whether to auto collapse when exceed maxItemCount | boolean | true | 1.9.0 |
| className | Class name | string | - | |
| compact | Compact sizing | boolean | true | |
| maxItemCount | Set the number of item when reached to collapse | number | 4 | 1.9.0 |
| moreType | ...area rendering type,one of 'default'、'popover' | string | 'default' | 1.27.0 |
| renderItem | Custom function, used with routes | (Route: Route) => React Node | - | 0.27.0 |
| renderMore | Custom ... area rendering | (restItem: ReactNode[]) => ReactNode | - | 1.27.0 |
| routes | Routing information, an array of route objects or strings, format reference: Route | Array<Route | string> | - | |
| separator | Customized delimiter | string | ReactNode | '/' |
| showTooltip | Toggle whether to show tooltip if text overflowed. If passed in as an object: width, overflowed width; ellipsisPos, ways of truncation; opts, passed directly to Tooltip component | boolean | showToolTipProps | {width: 150, ellipsisPos: 'end', opts: { autoAdjustOverflow: true, position: "bottomLeft" }} | 0.34.0 |
| style | Inline style | CSSProperties | - | |
| onClick | Click event | (item: Route, e: Event) => void | - | 0.27.0 |
| Properties | Instructions | type | Default | version |
|---|---|---|---|---|
| href | Destinations for links | string | - | |
| icon | Displayed icon | ReactNode | - | |
| onClick | Click event | function (item: Route, e: Event) | - | 0.27.0 |
| separator | Separator, used to override parent separator | ReactNode | - | 1.16.0 |
| noLink | To remove hover and active effect on an item | boolean | false | 1.16.0 |
| Properties | Instructions | type | Default | version |
|---|---|---|---|---|
| href | Link destinations | string | - | 0.27.0 |
| icon | Displayed icon | ReactNode | - | |
| name | Routing name | string | - | |
| path | Routing path | string | - |
After v>=1.16.0, other props in Breadcrumb.Item are also supported correspondingly.
aria-label props to indicate the function of the Breadcrumbaria-current='page' for the current item