学习在 React 项目中使用 StorybookJS

2025-06-04

学习在 React 项目中使用 StorybookJS

Storybook是一个 UI 开发环境,由于它在应用程序外部运行,因此允许开发人员独立地与组件进行交互。它就像一个 UI 组件的游乐场。

为了更好地理解这一点,假设你的项目中有几个组件,需要与它们进行交互。“正常”的工作流程是在浏览器中本地运行应用,然后与组件进行交互或测试。

然而,对于一个包含众多组件的大型应用来说,每次都执行这样的操作可能会令人望而生畏。这时 Storybook 就派上用场了。它允许你测试组件并进行交互,而无需在本地运行实际的应用。

Storybook 最棒的地方在于它本身就是一个 JavaScript 工具,因此几乎可以与任何 JavaScript 框架一起使用。本文将重点介绍如何在ReactJS项目中使用 Storybook。

 

步骤1:安装所需的软件包

在深入学习 Storybook 之前,您需要确保您的项目中拥有所需的软件包。

引导创建 React 应用程序

(如果已经设置了 React 项目,请跳过此步骤)

如果你还没有 React 项目,那么你需要做的第一件事就是启动一个 CRA 项目。
使用以下命令:
npx create-react-app storybook-project

注意:storybook-project将是我们的目录的名称,但您可以用任何您喜欢的名称替换您的目录。

 

安装 StorybookJS

cd 进入你的项目目录,在本例中storybook-project运行命令:
npx sb init
这将在你的 React 项目中完全安装 storybook

安装完成后,运行yarn storybook即可在本地运行故事书。

如果您在运行故事书时遇到困难,请删除yarn.lock项目的和节点模块,然后yarn再次运行。

仍然遇到问题?查看他们的 文档

 

步骤2:浏览 Storybook 界面

运行后yarn storybook,您将看到 Storybook 界面出现在浏览器中。

左侧面板有一个搜索栏,可以搜索不同的组件

搜索故事书

您还会注意到一个分组,标题为“Example”。然后是按钮、页眉和页面组件。每个组件都有各自的故事,我们稍后会进行探讨。

 

步骤3:理解代码结构

在代码中,有两点需要注意:

  1. 一个.storybook包含一些设置的文件夹。
    目前,我们不需要对此文件夹进行任何编辑。需要注意的是,要使组件显示在 Storybook 中,您需要一个.stories.js文件扩展名。您也可以使用.jsx, .ts, .tsx文件扩展名。

  2. 所有故事均位于src目录中的故事文件夹中。

探索stories文件

查看Button, Header and Page. stories files。您会注意到一个模式,每个文件都有一个带有标题和组件的导出默认值。

为了使故事书发挥作用,每个故事文件都必须有一个带有标题和组件属性的导出默认值。

导出默认故事书

标题为:'Example/Page'是将我们之前看到的示例组下的每个组件分组。

组件属性是组件在故事书中显示的名称。

故事书结构

理解故事是什么

一个组件可以有多个状态或用例。

单个组件的多种状态就是我们所说的故事。

例如,同一个按钮组件可以有主要故事、次要故事和大故事。

理解故事

在代码中,story 是一个函数,它根据一组参数返回组件的状态。它位于 stories 文件底部的名为 exports 的文件中。

故事

 

步骤4:为按钮组件构建故事

为了更好地了解如何创建故事,让我们为Button组件创建两个新故事 - 默认故事和禁用故事。

首先,删除安装时附带的故事文件夹并创建一个新的文件夹。

构建按钮组件

Button.jsx在故事目录内的文件中使用一些样式构建按钮组件。



import React from 'react';

export function Button({disabled, children} ) {
  return (
    <button
      disabled={disabled}
      style={{
        padding: 12,
        fontSize: 12,
        background: disabled ? 'lightgray' : 'green',
        color: disabled ? 'gray' : 'white',
      }}
    >
      {children}
    </button>
  );
}


Enter fullscreen mode Exit fullscreen mode

构建故事

创建一个Button.stories.jsx文件来构建两个故事:默认故事和禁用故事。不要忘记导出默认故事并指定标题和组件。



import React from 'react';

import { Button } from './Button';

export default {
  title: 'Components / Button',
  component: 'Button',
};

export const Default = () => <Button>Click me</Button>


export const Disabled = () => <Button disabled>Don't click me</Button>;


Enter fullscreen mode Exit fullscreen mode

按钮故事

定义 ArgTypes

ArgTypes 是控制每个故事的一种方式。可以把它想象成一种修改组件内 props 的方法。

对于我们的按钮,我们将添加一个disabledargType 并将控件指定为布尔值(因为这将是真或假)。

另外,由于 children 属性是文本,因此将 argTypes 控件设置为text。参见以下代码:



import React from 'react';

import { Button } from './Button';

export default {
  title: 'Components / Button',
  component: 'Button',
  argTypes: {
    disabled: { control: 'boolean' },
    children: { control: 'text' },
  },
};

export const Default = (args) => <Button {...args} />;

Default.args = {
  disabled: false,
  children: 'Click me',
};

export const Disabled = (args) => <Button {...args} />;

Disabled.args = {
  disabled: true,
  children: "Don't click me",
};


Enter fullscreen mode Exit fullscreen mode

现在您可以调整每个故事组成部分。

故事书参数类型

 

恭喜!您刚刚学习了如何为 React 项目创建故事。

 

观看视频教程,8分钟学会 Storybook

Storybook 提供更多功能,例如对故事执行单元测试以确认功能、进行可访问性检查等等。最棒的是,您可以使用VercelGitHub Pages和其他托管平台在线发布您的 Storybook。

文章来源:https://dev.to/_estheradebayo/learn-to-use-storybookjs-in-your-react-project-4nf2
PREV
来自高级前端开发人员的 37 条建议 1. 掌握基础知识 2. 了解 Web 的工作原理 3. 熟悉数据结构和算法 4. 通过实践而不是阅读/观看来学习 5. 遇到困难时寻求帮助 6. 以正确的方式寻求帮助 7. 不要复制/粘贴你不懂的代码 8. 不要盲目地应用网上找到的每条建议 9. 假设善意:人们希望你成功❤️ 10. 完成比完美更重要 11. 始终将任务分解为可管理的任务 12. 当你需要帮助时,要值得信赖 13. 对工作表现出热情 14. 保持开放的心态来学习新事物/工具/方法 15. 掌握你的开发工具🛠️ 16. 专注于创造价值 17. 为你的工作辩护:它不会为自己说话 18. 宁可写愚蠢的代码,也不要写聪明的代码 19. 你的经理是你最好的盟友 20.让经理的工作更轻松 21. 了解任务背后的大局 22. 为团队做出贡献(文档、技术讲座、演示等) 23. 成为特定领域的“可靠人员” 24. 培养沟通技巧 25. 遇到问题时休息一下 26. 发挥你的优势,而不是弱点 27. 掌控你的职业道路 28. 与其他开发人员交流 29. 指导年轻的开发人员 30. 使你解决的问题多样化 31. 寻找导师 32. 致力于 JavaScript 框架并精通它 33. 不断考虑用户体验 34. 勇于说“不” 35. 持续投资于你的技能 36. 当面临太多工作时,减少功能而不是代码质量。 37. 努力理解你的合作者(设计师、后端开发人员等)
NEXT
在 Windows 上安装 ZSH 欢迎大家 1. 设置 Windows 2. 设置 Oh-my-zsh 3. 自定义 Cygwin 和 Oh-my-zsh