加入直播会话:美东时间周四上午 11 点,Storybook 9 发布及 AMA
文档
Storybook Docs

特性和行为

要控制 Storybook 用户界面的布局,您可以在您的 .storybook/manager.js 中使用 addons.setConfig

.storybook/manager.ts
import { addons, type State } from 'storybook/manager-api';
 
addons.setConfig({
  navSize: 300,
  bottomPanelHeight: 300,
  rightPanelWidth: 300,
  panelPosition: 'bottom',
  enableShortcuts: true,
  showToolbar: true,
  theme: undefined,
  selectedPanel: undefined,
  initialActive: 'sidebar',
  layoutCustomisations: {
    showSidebar(state: State, defaultValue: boolean) {
      return state.storyId === 'landing' ? false : defaultValue;
    },
    showToolbar(state: State, defaultValue: boolean) {
      return state.viewMode === 'docs' ? false : defaultValue;
    },
  },
  sidebar: {
    showRoots: false,
    collapsedRoots: ['other'],
  },
  toolbar: {
    title: { hidden: false },
    zoom: { hidden: false },
    eject: { hidden: false },
    copy: { hidden: false },
    fullscreen: { hidden: false },
  },
});

下表详细说明了如何使用这些 API 值

名称类型描述示例值
navSize数字 (像素)显示故事列表的侧边栏大小300
bottomPanelHeight数字 (像素)插件面板位于底部位置时的大小200
rightPanelWidth数字 (像素)插件面板位于右侧位置时的大小200
panelPosition字符串插件面板显示位置'bottom''right'
enableShortcuts布尔值启用/禁用快捷键true
showToolbar布尔值显示/隐藏工具栏true
theme对象Storybook 主题,参见下一节undefined
selectedPanel字符串用于选择插件面板的 ID'storybook/actions/panel'
initialActive字符串选择移动设备上的默认活动选项卡'sidebar''canvas''addons'
layoutCustomisations对象布局自定义选项,参见下文{ showSidebar: ({ viewMode }, defaultValue) => viewMode === 'docs' ? false : defaultValue }`
sidebar对象侧边栏选项,参见下文{ showRoots: false }
toolbar对象使用插件 ID 修改工具栏中的工具{ fullscreen: { hidden: false } }

以下选项可在 sidebar 命名空间下配置

名称类型描述示例值
showRoots布尔值在侧边栏中将顶级节点显示为“根节点”false
collapsedRoots数组默认情况下视觉上折叠的根节点 ID 集合['misc', 'other']
renderLabel函数为树节点创建自定义标签;必须返回一个 ReactNode(item, api) => <abbr title="...">{item.name}</abbr>

以下选项可在 toolbar 命名空间下配置

名称类型描述示例值
[id]字符串切换特定工具栏项(例如 title, zoom)的可见性{ hidden: false }

以下选项可在 layoutCustomisations 命名空间下配置

名称类型描述示例值
showSidebar函数切换侧边栏的可见性({ storyId }, defaultValue) => storyId === 'landing' ? false : defaultValue
showToolbar函数切换工具栏的可见性({ viewMode }, defaultValue) => viewMode === 'docs' ? false : defaultValue

showSidebarshowToolbar 函数允许您隐藏 Storybook 功能中必不可少的部分 UI。如果使用不当,它们可能导致无法导航。隐藏侧边栏时,请确保显示的页面提供了替代的导航方式。

自定义用户界面

Storybook 的用户界面是高度可定制的。通过 showSidebarshowToolbar 函数提供的 API 和配置选项,您可以控制侧边栏和工具栏元素的显示方式。这两个函数都允许您包含一些默认行为,并且可以被覆盖以根据您的需要自定义用户界面。

覆盖侧边栏可见性

侧边栏位于屏幕左侧,包含搜索功能和导航菜单。用户可以通过键盘快捷键显示或隐藏它。如果您想强制侧边栏在特定位置可见或隐藏,可以在 layoutCustomisations 中定义一个 showSidebar 函数。以下是传递给该函数的可用参数以及如何使用它们的概述。

名称类型描述示例值
path字符串正在显示的页面路径'/story/components-button--default'
viewMode字符串当前页面是故事 (story) 还是文档 (docs)'docs''story'
singleStory布尔值当前页面是否是组件的唯一故事 (story)truefalse
storyId字符串当前故事 (story) 或文档 (docs) 页面的 ID'blocks-blocks-unstyled--docs'
layout对象当前布局状态参见下文
layout.isFullscreen布尔值预览画布是否处于全屏模式truefalse
layout.panelPosition字符串面板显示在预览下方还是侧面'bottom''right'
layout.showNav布尔值最终用户是否希望看到侧边栏的设置truefalse
layout.showPanel布尔值最终用户是否希望看到面板的设置truefalse
layout.showSidebar布尔值最终用户是否希望看到侧边栏的设置truefalse
./storybook/manager.ts
import { addons, type State } from 'storybook/manager-api';
 
addons.setConfig({
  layoutCustomisations: {
    // Hide the sidebar on the landing page, which has its own nav links to other pages.
    showSidebar(state: State, defaultValue: boolean) {
      if (state.storyId === 'landing' && state.viewMode === 'docs') {
        return false;
      }
 
      return defaultValue;
    },
  },
});

如果您通过 showSidebar 隐藏侧边栏,请确保显示的页面提供了替代的导航方式。

配置工具栏

默认情况下,Storybook 在 UI 顶部显示一个工具栏,允许您访问插件(例如 视口背景)或自定义 菜单。但是,如果您想自定义工具栏的行为,可以使用 showToolbar 函数。下文列出了可用的选项以及如何使用它们的概述。

名称类型描述示例值
path字符串正在显示的页面路径'/story/components-button--default'
viewMode字符串当前页面是故事 (story) 还是文档 (docs)'docs''story'
singleStory布尔值当前页面是否是组件的唯一故事 (story)truefalse
storyId字符串当前故事 (story) 或文档 (docs) 页面的 ID'blocks-blocks-unstyled--docs'
layout对象当前布局状态参见下文
layout.isFullscreen布尔值预览画布是否处于全屏模式truefalse
layout.panelPosition字符串面板显示在预览下方还是侧面'bottom''right'
layout.showNav布尔值最终用户是否希望看到侧边栏的设置truefalse
layout.showPanel布尔值最终用户是否希望看到面板的设置truefalse
layout.showToolbar布尔值最终用户是否希望看到工具栏的设置truefalse
./storybook/manager.ts
import { addons, type State } from 'storybook/manager-api';
 
addons.setConfig({
  layoutCustomisations: {
    // Always hide the toolbar on docs pages, and respect user preferences elsewhere.
    showToolbar(state: State, defaultValue: boolean) {
      if (state.viewMode === 'docs') {
        return false;
      }
 
      return defaultValue;
    },
  },
});

通过 URL 参数配置

您可以使用 URL 参数配置一些可用功能

配置选项查询参数支持的值
enableShortcuts快捷键false
--- (全屏)fulltrue, false
--- (显示侧边栏)navtrue, false
--- (显示面板)panelfalse, 'right', 'bottom'
selectedPaneladdonPanel任何面板 ID
showTabstabstrue
---instrumentfalse, true