Storybook Addon Root Attribute 
Storybook Addon Root Attribute 用于在运行时切换故事的 html、body 或某些元素的属性 Storybook
演示
安装
yarn add -D storybook-addon-root-attribute
配置
然后,在你的 Storybook 配置中创建一个名为 addons.js
的文件,并将以下内容添加到其中
import "storybook-addon-root-attribute/register";
或者创建一个名为 main.js
的文件,并在 addons
部分添加插件
module.exports = {
...
addons: [
...
'storybook-addon-root-attribute/register'
]
};
用法
你需要在编译时使用 withRootAttribute
装饰器添加所有属性值。它们可以全局添加或按故事添加。然后你可以在插件 UI 上选择激活哪些根属性
// Import from @storybook/X where X is your framework
import {
configure,
addDecorator,
addParameters,
storiesOf
} from "@storybook/react";
import { withRootAttribute } from "storybook-addon-root-attribute";
// global
addDecorator(withRootAttribute);
addParameters({
rootAttribute: {
defaultState: {
name: "Default",
value: null
},
states: [
{
name: "Dark",
value: "dark"
}
]
}
});
你可以使用 rootAttribute
参数单独覆盖每个故事的资源
// per story
storiesOf("Addons|RootAttribute", module).add(
"Camera Icon",
() => <i className="fa fa-camera-retro"> Camera Icon</i>,
{
rootAttribute: {
defaultState: {
name: "Default",
value: null
},
states: [
{
name: "Dark",
value: "dark"
}
]
}
}
);
如果你想使用工具提示(面板不会消失),你需要在参数中将 tooltip
设置为 true
addParameters({
rootAttribute: {
tooltip: true,
defaultState: {
name: "Default",
value: null
},
states: [
{
name: "Dark",
value: "dark"
}
]
}
});
工具提示和面板关于属性更改不会同步。
配置
rootAttribute
参数的配置项
名称 | 默认值 | 变体 | 描述 |
---|---|---|---|
root | 'html' | 'html'、'body',或 'document.querySelector()' 返回的第一个元素;如果未找到,则为 'html' | 根节点,其属性将由插件更改 |
attribute | 'class' | 任何有效的属性名称 | 属性名称 |
defaultState | {} | 应包含 name 和 value |
属性的默认状态。值为 nil 将从根节点移除属性 |
states | [] | 包含对象的数组,这些对象包含属性的唯一 name 和 value |
属性值的所有所需状态。每个对象应包含唯一的 name (用于按钮)和属性的 value |
tooltip | false | 布尔值 | 为 Storybook 添加工具提示按钮 |
配置示例
addDecorator(withRootAttribute);
addParameters({
rootAttribute: {
root: "html",
attribute: "class",
defaultState: {
name: "Default",
value: null
},
states: [
{
name: "Dark",
value: "dark"
},
{
name: "A11Y",
value: "accessibility"
}
]
}
});