侧边栏项目
在上一节的示例中,我们已经介绍了三种类型的项目类型:doc
、category
和link
,它们的用法相当直观。
我们将正式介绍它们的 api。
还有第四种类型:autogenerated
,我们将在后面详细解释。
- Doc: 链接到文档页面,并将其与侧边栏关联
- Link: 链接到任何内部或外部页面
- Category: 创建侧边栏项的下拉列表
- Autogenerated: 自动生成侧边栏切片
- HTML: 在项目的位置呈现纯 HTML
- *Ref: 链接到文档页面,而不使项目参与导航生成
Doc: 链接到文档
使用doc
类型链接到一个文档页面,并将该文档分配给侧边栏:
type SidebarItemDoc =
// Normal syntax
| {
type: "doc";
id: string;
label: string; // Sidebar label text
className?: string; // Class name for sidebar label
customProps?: Record<string, unknown>; // Custom props
}
// Shorthand syntax
| string; // docId shortcut
例子:
sidebars.js
module.exports = {
mySidebar: [
// Normal syntax:
{
type: "doc",
id: "doc1", // document ID
label: "Getting started", // sidebar label
},
// Shorthand syntax:
"doc2", // document ID
],
};
如果您使用文档速记或autogenerated边栏,您将失去通过项定义自定义边栏标签的能力。但是,您可以在该文档中使用sidebar_label
标记前置事项,它比侧边栏项中的label
键具有更高的优先级。类似地,您可以使用sidebar_custom_props
为文档页面声明自定义元数据。
备注
doc
项设置了一个隐式侧边栏关联。不要将相同的文档分配给多个侧边栏:将类型改为ref
。
提示
侧栏自定义 props 是一种将任意文档元数据传播到客户端的有用方法,因此在使用任何与文档相关的钩子来获取文档对象时,您可以获得额外的信息。
Link: 链接到任何页面
使用link
类型链接到非文档的任何页面(内部或外部)。
type SidebarItemLink = {
type: "link";
label: string;
href: string;
className?: string;
description?: string;
};
例子:
sidebars.js
module.exports = {
myLinksSidebar: [
// External link
{
type: "link",
label: "Facebook", // The link label
href: "https://facebook.com", // The external URL
},
// Internal link
{
type: "link",
label: "Home", // The link label
href: "/", // The internal path
},
],
};
HTML: 呈现自定义标记
使用html
类型在项目的<li>
标签中呈现自定义 html。
这对于插入自定义项(如分隔符、节标题、广告和图像)非常有用。
type SidebarItemHtml = {
type: "html";
value: string;
defaultStyle?: boolean; // Use default menu item styles
className?: string;
};
例子:
sidebars.js
module.exports = {
myHtmlSidebar: [
{
type: "html",
value: '<img src="sponsor.png" alt="Sponsor" />', // The HTML to be rendered
defaultStyle: true, // Use the default menu item styling
},
],
};
提示
菜单项已经被包装在一个<li>
标签中,所以如果你的自定义项很简单,比如标题,只需要提供一个字符串作为值,并使用className
属性来设置它的样式:
sidebars.js
module.exports = {
myHtmlSidebar: [
{
type: "html",
value: "Core concepts",
className: "sidebar-title",
},
],
};
Category: 创建层次结构
使用category
类型创建侧边栏项的层次结构。
type SidebarItemCategory = {
type: "category";
label: string; // Sidebar label text.
items: SidebarItem[]; // Array of sidebar items.
className?: string;
description?: string;
// Category options:
collapsible: boolean; // Set the category to be collapsible
collapsed: boolean; // Set the category to be initially collapsed or open by default
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"],
},
],
},
};
类别链接
有了类别链接,点击一个类别可以导航到另一个页面。
提示
使用类别链接来介绍文档的类别。
自动生成的类别可以使用_category_.yml
文件来声明链接。