用于在故事渲染树的任何位置使用 storyContext 和 storyFn 的 Storybook 提供程序/钩子插件。

在 Github 上查看

useStorybook - 提供程序和钩子

Publish

此插件提供了一个装饰器和钩子,用于在渲染树的任何位置使用当前活动故事的 storyContextstoryFn。当您想要检查故事内容,或者在实用程序函数或事件跟踪中使用 storyContext 的部分时,它特别有用。

安装

使用 NPM 或 Yarn

yarn add @alexanderjeurissen/use-storybook

npm install --save @alexanderjeurissen/use-storybook

基本用法

提供了一个 HOC,使将提供程序挂钩到您的故事尽可能无缝。

./storybook/preview.js 中添加 HOC 作为装饰器。

import { withStoryContext } from '@alexanderjeurissen/use-storybook';

addDecorator(withStoryContext);

在故事渲染树的任何位置使用提供的钩子。

import { useStorybook } from '@alexanderjeurissen/use-storybook';

export default {
  title: "Components|my-component",
};

export const Default = () => {
  const { storyContext, storyFn } = useStorybook();

  ...
}

高级用法

在某些情况下,需要更细粒度的控制。因此,除了 withStoryContext HOC 之外,还可以访问底层提供程序和上下文。

<StoryProvider

import { StoryProvider } from '@alexanderjeurissen/use-storybook';

addDecorator((storyFn, storyContext) => {
  ...

  return (
    <StoryProvider>
      {storyFn()}
    </StoryProvider>
  );
});

此函数签名正是 withStoryContext hoc 提供的。

StoryContext

import { StoryContext } from '@alexanderjeurissen/use-storybook';

addDecorator((storyFn, storyContext) => {
  ...

  return (
    <StoryContext.Provider value={storyFN, storyContext, ...}>
      {storyFn()}
    </StoryContext.Provider>
  );
});

此提供程序签名正是 <StoryProvider 组件提供的。