加入直播会话:周四,美国东部时间上午 11 点,Storybook 9 发布与 AMA

在 Storybook stories 中管理组件状态。

在 Github 上查看

Storybook State

该项目不再维护。推荐的替代方案是 React 16+ 中的 useState hook。

一个 Storybook 扩展,用于管理无状态组件的状态。这使得为无状态组件编写 stories 变得更容易。

入门

添加 @dump247/storybook

npm install --save-dev @dump247/storybook-state

addons.js 中注册扩展。

import '@dump247/storybook-state/register';

创建 Story

使用该扩展创建 story。

import React from 'react';
import { storiesOf } from '@storybook/react';
import { withState } from '@dump247/storybook-state';

storiesOf('Checkbox', module).add(
  'with check',
  withState({ checked: false })(({ store }) => (
    <Checkbox
      {...store.state}
      label="Test Checkbox"
      onChange={(checked) => store.set({ checked })}
    />
  )),
);

扩展

withState(initialState)(storyFn)

initialState 是组件的初始状态。这是一个对象,其中每个键是要设置的状态值。

storyFn 是生成 story 组件的函数。此函数接收 story 上下文对象 { store: Store } 作为参数。

此扩展可以与其他 Storybook 扩展函数组合使用

withState({ initialState: '' })(
  withInfo(`Some cool info`)(
    ({ store }) => <MyComponent {...store.state} />
  )
)

Store API

store.state

包含当前状态的对象。

store.set(state)

设置给定的状态键。state 参数是一个包含要设置的键和值的对象。

这只会设置/覆盖提供的特定键。

store.reset()

将 store 重置为初始状态。

面板

该项目包含一个 Storybook 面板,用于显示当前状态并允许重置状态。

Panel Screenshot