在故事书 6 中禁用每个故事的画布

Cip*_*ana 9 storybook storybook-addon-specifications

我正在尝试找到一种在新故事书 6 的故事级别禁用画布的方法。我正在制作一个组件库,根据故事的不同,其中一些组件只有画布,而其他组件只有文档。

我尝试过使用

myStory.parameters = {
  previewTabs: {
    canvas: {
      hidden: true,
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

或者

myStory.parameters = {
  previewTabs: {
    'storybook/docs/panel': {
      hidden: false,
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

取决于故事。但是,这会导致不显示选项卡名称。结果,会发生以下情况:

  1. 我有故事 1 - 只有画布可见
  2. 我有故事 2 - 只有文档可见
  3. 我单击故事 1 - 正如预期的那样,我看到了画布
  4. 我点击故事 2 - 我也看到了画布,尽管它是隐藏的(我想是因为该选项卡已从上一个故事中保留下来)。好像这还不够糟糕,我什至无法单击文档,因为没有可见的选项卡名称。
  5. 反之亦然(如果我从故事 2 开始)

作为文档的解决方法,我发现了这个(感谢本杰明,在这篇文章中

myStory.parameters = {
  docs: { page: null },
};
Run Code Online (Sandbox Code Playgroud)

这样,我仍然可以看到画布和文档选项卡,但对于已设置此参数的故事,文档选项卡现在为空。

我正在寻找对画布做类似的事情,并且已经尝试过

myStory.parameters = {
  canvas: { page: null },
};

myStory.parameters = {
  canvas: { disabled: true },
};
Run Code Online (Sandbox Code Playgroud)

但还没有工作。

tms*_*sss 21

我不知道这个解决方案是否适合您的需求,但我发现的解决方法是将我的故事写入.mdx并禁用画布Meta

import { Meta } from '@storybook/addon-docs/blocks';
import { MyComponent } from './MyComponent';

<Meta
  title="Section/MyComponent"
  parameters={{
    viewMode: 'docs',
    previewTabs: { 
      canvas: { hidden: true } 
     },
  }}
/>

# My markdown title

<Canvas>
  <Story name="mycomponent">
    <MyComponent />
  </Story>
</Canvas>

Run Code Online (Sandbox Code Playgroud)


Yun*_*unz 11

是的,选项卡是从上一个故事中保存的,但是您可以为该故事设置默认视图模式,这应该可以解决您的问题。

myStory.parameters = {
  previewTabs: {
    canvas: {
        hidden: true,
    },
  },
  viewMode: 'docs',
};
Run Code Online (Sandbox Code Playgroud)

更多示例请参见 https://github.com/storybookjs/storybook/blob/master/addons/docs/docs/recipes.md#controlling-a-storys-view-mode