📜  故事书的理解和为 React 编写故事的方式

📅  最后修改于: 2022-05-13 01:56:17.121000             🧑  作者: Mango

故事书的理解和为 React 编写故事的方式

Storybook 是一个开源的 UI 开发工具。它帮助开发人员独立地创建具有适当文档的可重用、有组织的 UI 组件。我们创建的组件称为 故事书中的故事。

在本文中,我们将了解以下主题:

  • 如何写一个基本的故事
  • 如何将故事组合在一个文件夹中
  • 如何在故事中嵌入故事

先决条件:

  • 故事书介绍及安装

在您的项目中创建 React 应用程序并添加 Storybook:

步骤1:创建react项目文件夹,打开终端,如果你已经全局安装了create-react-app,输入命令npm create-react-app文件夹名称。如果您还没有,则使用该命令全局安装 create-react-app。

npm create-react-app projectstorybook

第2步:创建项目文件夹(即项目)后,使用以下命令移动到该文件夹。

cd projectstorybook

第 3 步:要在项目中添加故事书,请在终端中编写命令

npm sb init

项目结构:它看起来像这样。我们已经删除了 src 文件夹中的默认故事文件夹。我们创建了一个 Components 文件夹,我们在其中为我们的组件 Button 和 WelcomeText 创建了另外两个文件夹,每个文件夹都有自己的 Javascript、CSS 和 Stories 文件。我们还创建了另一个文件夹 Page,它基本上嵌入了其他两个组件,即 Button 和 WelcomeText。

例 1:在这个例子中,我们将看到如何写一个基本的故事。让我们看一步一步的实现。

第 1 步:在这里,我们正在创建组件 i,ea 故事按钮。src文件夹中,我们将在文件夹中创建一个名为 Components 的文件夹,我们将在该文件夹中创建另一个名为 Button 的文件夹,再次创建三个名为 Button.js、Button.css 和 Button.stories.js 的文件,我们将编写各自的代码。在这个文件中,我们只是创建了一个按钮组件,它接受变体、子元素作为道具、

Button.js
import React from 'react'
import "./Button.css"
  
function Button(props) {
    const { variant = 'login', children, ...rest} = props
    return (
        
    )
}
export default Button;


Button.css
.btn{
    border: none;
    padding: 20px 32px;
    text-align: center;
    background-color: white;
    display: inline-block;
    font-size: 16px;
}
.sign-in{
    border: 2px solid red;
    color: red;
    
}
.login{
    border: 2px solid green;
    color: green;
  
}


Button.stories.js
import React from 'react';
import Button from './Button';
  
// Meta data about the story and 
// its respective component
export default {  
    title:"Button",
    component:Button
}
  
export const Login = () => 
export const SignIn = () =>


WelcomeText.js
import React from 'react'
import "./WelcomeText.css"
  
function WelcomeText (props) {
    const { variant = 'primary', children, ...rest} = props
    return (
        

        {children}         

    ) }    export default WelcomeText


WelcomeText.css
.welcome-text{
    font-size: 80px;
    font-weight: 900;
}
  
.primary{color:green};
.secondary{color:black};


WelcomeText.stories.js
import React from 'react';
import WelcomeText from './WelcomeText';
  
export default{
    title:'WelcomeText',
    component:WelcomeText
}
  
export const Primary = () => 
                                Login
                             
export const Secondary = () => 
                                Sign In
                               


Button.stories.js
import React from 'react';
import Button from './Button';
  
export default {
  
    // Here Home is the name of the
    // folder we want to give
    title: "Home/Button",
    component: Button
}
  
export const Login = () => 
export const SignIn = () =>


WelcomeText.stories.js
import React from 'react';
import WelcomeText from './WelcomeText';
  
  
export default{
  
    // Home is the name of the folder
    title:'Home/WelcomeText', 
    component:WelcomeText
}
  
  
export const Primary = () => 
                                  Login
                             
export const Secondary = () => 
                                  Sign In
                               


Page.stories.js
import React from 'react';
import { Login } from '../Button/Button.stories';
import { Primary } from '../WelcomeText/WelcomeText.stories';
  
export default{
    title:'Home/Page',
}
  
export const LoginPages = () => (
    <>
      
      
    
)


第 2 步:为我们的组件添加一些样式。我们创建了 btn 类,它为按钮元素添加样式。我们还有另外两个使用不同样式的类登录和登录。

按钮.css

.btn{
    border: none;
    padding: 20px 32px;
    text-align: center;
    background-color: white;
    display: inline-block;
    font-size: 16px;
}
.sign-in{
    border: 2px solid red;
    color: red;
    
}
.login{
    border: 2px solid green;
    color: green;
  
}

第 3 步:在这个文件中,我们编写故事。我们导入按钮组件。我们正在为我们的按钮组件创建两个子故事,分别采用变体登录和登录。我们为导出默认创建了一个唯一的标题,并在这里提到了组件的名称,它是 Button;

按钮故事.js

import React from 'react';
import Button from './Button';
  
// Meta data about the story and 
// its respective component
export default {  
    title:"Button",
    component:Button
}
  
export const Login = () => 
export const SignIn = () =>

运行应用程序的步骤:使用以下命令从项目的根目录运行应用程序。

npm run storybook

输出:

示例 2 :在此示例中,我们将看到如何将故事组合在一起。让我们看一步一步的实现。

第 1 步: Storybook 让我们可以根据自己的方便将故事组合在一起。为了更好地理解,让我们创建另一个文件夹作为welcomeText ,并制作WelcomeText.js、WelcomeText.css、WelcomeText.stories.js等文件,并分别编写下面提到的代码。在文件中,我们正在创建一个显示文本的组件。我们使用一个变体,children 作为这个组件的 props。

WelcomeText.js

import React from 'react'
import "./WelcomeText.css"
  
function WelcomeText (props) {
    const { variant = 'primary', children, ...rest} = props
    return (
        

        {children}         

    ) }    export default WelcomeText

第 2 步:添加主要和次要类以及类欢迎文本。

欢迎文本.css

.welcome-text{
    font-size: 80px;
    font-weight: 900;
}
  
.primary{color:green};
.secondary{color:black};

第 3 步:像以前一样,我们正在为组件创建一个故事,在其中我们创建其他子故事 Primary,该子故事包含主要和次要作为变体。

WelcomeText.stories.js

import React from 'react';
import WelcomeText from './WelcomeText';
  
export default{
    title:'WelcomeText',
    component:WelcomeText
}
  
export const Primary = () => 
                                Login
                             
export const Secondary = () => 
                                Sign In
                               

输出:

输出

例3:在这个例子中,我们将看到如何在故事中做故事。让我们看一步一步的实现。

第 1 步:现在要将所有故事组合在一个文件夹中,我们只需在故事的标题部分中将文件夹的名称写在“/ComponentName”之前。

按钮故事.js

import React from 'react';
import Button from './Button';
  
export default {
  
    // Here Home is the name of the
    // folder we want to give
    title: "Home/Button",
    component: Button
}
  
export const Login = () => 
export const SignIn = () =>

WelcomeText.stories.js

import React from 'react';
import WelcomeText from './WelcomeText';
  
  
export default{
  
    // Home is the name of the folder
    title:'Home/WelcomeText', 
    component:WelcomeText
}
  
  
export const Primary = () => 
                                  Login
                             
export const Secondary = () => 
                                  Sign In
                               

在这里,两个故事都在HOME文件夹中。

第 2 步:就像在 React 中一样,我们可以将一个组件嵌入到另一个组件中,我们可以在故事的情况下类似地这样做。让我们创建一个名为 Page 的故事,为此创建一个名为Page的文件夹并添加一个名为 Page.stories.js 的文件,然后编写下面的代码,我们将在其中添加我们之前创建的两个故事,即Login from Button.stories。 js 和另一个来自 WelcomeText.stories.js 的Primary 在这里,我们将两个故事 Login 和 Primary 嵌入到新故事页面中。

页面故事.js

import React from 'react';
import { Login } from '../Button/Button.stories';
import { Primary } from '../WelcomeText/WelcomeText.stories';
  
export default{
    title:'Home/Page',
}
  
export const LoginPages = () => (
    <>
      
      
    
)

输出:

输出