侧边栏项目
在上一章节中,我们介绍了三种项目类别:doc
、category
、link
。它们的用途还是很显然的。 我们会正式介绍它们的 API。 还有第四种类型:autogenerated
,我们稍后再详细解释。
- Doc: 文档页面的链接,并和侧边栏绑定
- Link:内部或外部页面链接
- Category:创建侧边栏项下拉菜单
- Autogenerated: generate a sidebar slice automatically
- HTML:在这个位置渲染纯 HTML
- *Ref: link to a doc page, without making the item take part in navigation generation
Doc - 文档链接
使用 doc
类型链接至文档页面,并分配链接文档至侧边栏:
type SidebarItemDoc =
// 普通语法
| {
type: 'doc';
id: string;
label: string; // 侧边栏标签文本
className?: string; // 侧边栏标签类名
customProps?: Record<string, unknown>; // 自定义属性
}
// 简写语法
| string; // 文档 ID 简写
示例:
sidebars.js
module.exports = {
mySidebar: [
// 普通语法:
{
type: 'doc',
id: 'doc1', // 文档 ID
label: 'Getting started', // 侧边栏标签
},
// 简写语法:
'doc2', // 文档 ID
],
};
如果你用了文档简写,或者自动生成侧边栏,你就不能通过侧边栏项的定义来自定义侧边栏标签了。 然而,你可以在这篇文档中使用 sidebar_label
Markdown 前言。它会优先于侧边栏项目中的 label
字段。 类似地,你可以用 sidebar_custom_props
来声明文档页面的自定义元数据。
备注
doc
项目会设置隐含侧边栏关联。 不要把同一篇文档分配到多个侧边栏里:如果有需要,请使用 ref
。
提示
如果想要向客户端传送任意文档元数据,侧边栏自定义属性是个不错的方式,这样你就可以在使用钩子函数时,在返回的文档对象上获得额外的信息了。
Link - 任意页面链接
使用 link
类型链接到任何非文档的页面(内部或外部链接) 。
type SidebarItemLink = {
type: 'link';
label: string;
href: string;
className?: string;
};
示例:
sidebars.js
module.exports = {
myLinksSidebar: [
// 外部链接
{
type: 'link',
label: 'Facebook', // 链接标签
href: 'https://facebook.com', // 外部 URL
},
// 内部链接
{
type: 'link',
label: 'Home', // 链接标签
href: '/', // 内部路径
},
],
};
HTML - 渲染自定义标记
使用 html
类型在项目的 <li>
标签中渲染自定义 HTML。
适用于插入自定义项目,比如分割线、节标题、广告、图片。
type SidebarItemHtml = {
type: 'html';
value: string;
defaultStyle?: boolean; // 使用默认的菜单项目样式
className?: string;
};
示例:
sidebars.js
module.exports = {
myHtmlSidebar: [
{
type: 'html',
value: '<img src="sponsor.png" alt="Sponsor" />', // 要渲染的 HTML
defaultStyle: true, // 使用默认的菜单项目样式
},
],
};
提示
菜单项目已经被包装在 <li>
标签中了,所以如果你的自定义项目比较简单,比如只是一个标题,那么你只需用一个字符串作为值,然后用 className
属性来提供样式:
sidebars.js
module.exports = {
myHtmlSidebar: [
{
type: 'html',
value: '核心概念',
className: 'sidebar-title',
},
],
};
Category - 创建分类层级
使用 category
类型创建侧边栏项的层次结构。
type SidebarItemCategory = {
type: 'category';
label: string; // 侧边栏标签文字
items: SidebarItem[]; // 侧边栏项目列表。
className?: string;
// 类别选项
collapsible: boolean; // 把类别设置为可折叠
collapsed: boolean; // 把类别设置为默认折叠或打开
link: SidebarItemCategoryLinkDoc | SidebarItemCategoryLinkGeneratedIndex;
};
示例:
sidebars.js
module.exports = {
docs: [
{
type: 'category',
label: 'Guides',
collapsible: true,
collapsed: false,
items: [
'creating-pages',
{
type: 'category',
label: 'Docs',
items: ['introduction', 'sidebar', 'markdown-features', 'versioning'],
},
],
},
],
};
提示
如果你不需要个性化,可以用简写语法:
sidebars.js
module.exports = {
docs: {
Guides: [
'creating-pages',
{
Docs: ['introduction', 'sidebar', 'markdown-features', 'versioning'],
},
],
},
};
类别链接
使用类别链接,让点击类别标签可以跳转到另一个页面。
提示
用类别链接来做一组文档的引言。
Autogenerated categories can use the _category_.yml
file to declare the link.