npm 包 @sambego/storybook-state 使用教程

前言

在前端开发中,我们需要经常使用到 UI 组件库。而我们最常用的就是 Storybook,它是一个开源的前端组件开发工具。这个工具的最大优点就是可以预览组件,以及交互式的展示组件提供给开发者进行交互测试,从而在编写组件时可以大大提高开发效率。

@storybook/state 是 Storybook 中的一个名为 state 的插件。它的作用就是在 Storybook 中提供一个方便的状态管理解决方案,以及为组件测试提供了支持。那么,在本文中,我们将介绍 npm 包 @sambego/storybook-state 的使用方法。

安装

首先,我们需要安装 @sambego/storybook-state 这个 npm 包。你可以使用 npm 安装:

--- ------- ---------- ------------------------

或者使用 yarn 安装:

---- --- -----  ------------------------

快速开始

我们通过一个实例来了解该插件的使用。假设我们要开发一个简单的文本编辑器,它有两个主要的功能,一个是添加文字,一个是清空文本框。我们怎样在 Storybook 中使用这个插件呢?

1. 创建一个组件

我们先来创建一个组件:

------ ------ - -------- - ---- --------

----- ---------- - -- ------------ - --- -------- -- -- -
  ----- ------ -------- - -----------------------

  ----- ------------------ - -- -- -
    ------------ - ---- - ------------
    -------- -- ---------------
  --

  ----- ---------------- - -- -- -
    ------------
    -------- -- -------------
  --

  ------ -
    -----
      --------- ------------ ----------- -- ------------------------ --
      ------- -------------------------------- -------------
      ------- -----------------------------------------
    ------
  --
--

------ ------- -----------

2. 添加 Story

接下来,我们为这个组件添加 Story:

------ ----- ---- --------
------ ---------- ---- ---------------
------ - --------- - ---- ---------------------------

------ ------- -
  ------ ---------------------
  ---------- -----------
  ----------- --------------
--

------ ----- ------- - -- -- -
  ----- ------------ - ----- -- ----------------- --- -- -------

  ------ ----------- ----------------------- ---
--

这里我们使用 withState 包装了这个组件,并在组件外部添加了一个 onChange 回调函数以观察组件内部状态的变化。

withState 函数的作用是将一个函数参数传递到组件,在组件中使用该函数可以修改本地状态并返回该状态。同时,withState 回调在每次状态发生变化时被调用。

详细解释

@storybook/state 插件只在 Storybook 框架中存在,它不会影响实际应用中的代码。@storybook/state 的设计目的是提供一个管理复杂组件状态的解决方案,并为组件测试提供支持。

withState

当使用 withState 包装组件时,该函数会将一个函数对象传递到该组件中,使其可以使用本地状态管理解决方案。

withState 函数的第一个参数是一个状态管理对象,该对象包含两个属性:

  • store 是一个可以保存和提取本地状态的地方。
  • actions 是一个返回处理器/动作函数的对象。这些函数用于修改本地状态,同时更新 Storybook 页面。

withState 返回的结果是一个高阶组件,在使用高阶函数的组件注入 store 和 actions 属性的同时,也将一个 prop name 为 store 传递给被注入进来的组件。

store

store 属性的作用是在组件的生命周期中提供一个从外部存储和提取状态的地方。你可以将 store 视为一个储存本地状态的容器。store 属性以一个记录第一渲染的 props 和 state 的对象开始,然后在操作后每次重新渲染组件后,记录的信息将越来越多。

当使用 withState 包装组件时,store 对象被注入到包装组件的 prop 中。从 store 对象中读取状态值的方法与普通状态管理一样,你可以使用 store.get(key) 方法读取存储在 store 对象中的状态值。

actions

actions 属性是一个包含处理器/动作函数的对象,这些函数用于更新 store 对象。它们的主要作用是创建 callback 函数来更新 store 对象。一旦 store 对象被更新,Storybook 页面就会相应地更新。

如果你在 Storybook 页面上使用这些函数来编辑组件中的状态,那么这些函数优先使用 withState 的本地状态。

你可以看到,在上面的示例代码中,我们在按钮的 onClick 方法中使用 handleAddTextClick 和 handleClearClick 方法来更新组件的状态和 store,这是因为我们使用了 withState 包装了该组件。

结束语

总的来说,@sambego/storybook-state 插件是一个非常有用的包,它可以方便地为我们组件控制提供便利并辅助我们进行组件测试。但是在使用 withState 函数时,一定要注意,只有在 Storybook 框架中使用时,它才会影响状态,而在应用中,它是不会影响任何代码的。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/sambego-storybook-state


猜你喜欢

  • npm 包 @coffee-shop/barista 使用教程

    前言 作为网站前端开发人员,我们经常需要管理大量的 JavaScript 代码。但是,如果每次都手写底层代码,很容易降低工作效率并增加错误率。幸运的是,有数以千计的 npm 包可供使用,使我们可以快速...

    5 年前
  • npm 包 @coffee-shope/theme 使用教程

    前言 虽然 CSS 框架在市面上已有许多选择,但是有时候我们需要自定义一些样式,以满足我们的项目需求。为了简化这个过程,@coffee-shope/theme 这个 npm 包应运而生。

    5 年前
  • npm 包 classcat 使用教程

    介绍 classcat 是一个 npm 包,用于管理 classname 的解决方案。它支持将一组字符串、对象和布尔值组合,以用于渲染和返回最终 classname。

    5 年前
  • npm 包 @types/react-color 使用教程

    在前端开发中,经常会用到颜色选择器来美化界面或者实现功能。而 React 作为一种强大的前端框架,已经有了很多优秀的颜色选择器组件。然而,在 TypeScript 项目中使用第三方组件时,可能会出现类...

    5 年前
  • npm 包 @types/lodash.isstring 使用教程

    什么是 @types/lodash.isstring? @types/lodash.isstring 是一种 TypeScript 类型定义,用于描述 lodash.isString 函数的类型。

    5 年前
  • npm 包 @types/lodash.isequal 使用教程

    简介 @types/lodash.isequal 是 lodash 库的类型定义包。如果你在使用 Typescript 进行前端开发的话,该包会为你带来很大的便利。

    5 年前
  • npm 包 @types/exenv 使用教程

    在前端开发中,我们经常需要使用一些全局对象,例如 window 和 document 等。而在 TypeScript 的环境下,这些全局对象并没有被定义,因此需要使用 @types 来进行类型声明。

    5 年前
  • npm 包 @storybook/preset-typescript 使用教程

    简介 在前端开发中,使用 Storybook 可以让我们更加高效地开发和测试组件,而 @storybook/preset-typescript 包则为使用 TypeScript 的开发者提供了更好的支...

    5 年前
  • npm包 @blablacar/cli使用教程

    简介 在前端开发中,我们经常需要通过命令行来完成一些日常任务,如打包、构建、部署等。而使用命令行操作可能会涉及到很多的命令和参数,而这就需要我们记忆和熟练掌握。好在我们有npm包 @blablacar...

    5 年前
  • npm 包 focus-trap 使用教程

    简介 focus-trap 是一个轻量级的 JavaScript 库,用于管理焦点陷阱。它可以解决一些常见的用户体验问题,例如:当用户打开一个模态对话框时,防止它们在模态对话框之外的 UI 上点击或滚...

    5 年前
  • npm 包 country-telephone-data 使用教程

    背景 在前端开发中,经常需要对用户电话号码进行验证或格式化,然而不同国家或地区的电话号码格式可能会有所不同。为了方便处理这些电话号码,npm 社区中有一个很实用的 npm 包:country-tele...

    5 年前
  • npm 包 @types/lodash.debounce 使用教程

    简介 在前端开发中,我们经常需要处理一些频繁触发的事件,例如 window 的 resize 或者 scroll,以及 input 输入框中用户在快速键盘输入时的变更等。

    5 年前
  • npm 包 @artibox/locale 使用教程

    前言 在前端开发中,国际化技术是不可或缺的。而 npm 包 @artibox/locale 就是一款非常优秀的国际化工具。本文将详细介绍该工具的使用方法,以及相关的配置和实现方法,使读者可以轻松实现国...

    5 年前
  • npm 包 esdoc-jsx-plugin 使用教程

    在前端的开发过程中,文档是不可或缺的一部分。使用好的文档工具,在维护项目和协作开发时都能大大提高效率。而 esdoc-jsx-plugin 就是一个配置简单并且功能强大的文档工具,它可以帮助你快速生成...

    5 年前
  • npm 包 esdoc-flow-type-plugin 使用教程

    在前端开发中,代码注释和文档生成是非常重要的一部分,它能够为项目的维护和协作提供重要的支持。而在 JavaScript 语言中,由于其动态性,在文档生成的时候需要使用 ES6 语法的类型注释,以及 F...

    5 年前
  • npm 包 esdoc-flow-plugin 使用教程

    在前端开发中,使用文档工具可以提高代码的可读性和项目的维护性。esdoc 是一个轻量级的 JavaScript 文档生成工具,它能够将代码转换为文档并提供良好的阅读体验。

    5 年前
  • npm 包 babel-preset-mobx 使用教程

    简介 mobx 是目前非常流行的一种状态管理库,可以帮助我们在 React、Vue、Angular 等前端框架中更高效地管理组件之间的状态。但是在使用 mobx 时,我们需要先将代码转化为 ES6 语...

    5 年前
  • npm 包 fuzzy-match-utils 使用教程

    前言 在前端开发过程中,有时我们需要根据关键词进行模糊匹配,比如搜索功能中的匹配,文件名匹配等等。fuzzy-match-utils 就是一款 NPM 包,提供了一些常用的模糊匹配方法,可以方便我们在...

    5 年前
  • npm 包 rxjs-compat 使用教程

    导语 在前端开发中,RxJS 是一个非常重要的库。RxJS 实现了对响应式编程的支持,可以用于编写异步代码、处理事件流等。不过,在新版 RxJS 中,有一些特性被移除,这就导致了一些旧的代码无法正常运...

    5 年前
  • npm 包 @stratusjs/runtime 使用教程

    前言 @stratusjs/runtime 是一个轻量级的 JavaScript 运行时库,用于在浏览器和 Node.js 环境中运行和管理应用程序。它提供了一些常用的功能,如事件驱动、状态机、模块加...

    5 年前

相关推荐

    暂无文章