@bbbtech/storybook-formik

中文文档
4.0.0发布于 2025/01/25MITTypeScriptESM + CJS近 30 天下载 4.2万

故事书的附加内容允许您在故事中使用依赖Formik上下文的组件,并在面板中看到内部的Formik状态.

中文使用文档
文档目录11 节
  1. 向BBB技术的迁移
  2. 安装
  3. 使用量
  4. 遗留故事格式
  5. 参数
  6. formik.castValues 与 formik.validationSchema
  7. 使用控件
  8. 性质示例
  9. 捐款
  10. 发展
  11. 发布新版本

故事书格式

A 类 故事书 添加和装饰器将Formik Fields包裹起来,并在一个面板中跟踪其状态.

example screenshot

您可以在行动中看到实例故事 这里。 。 。 .

感谢 @ 贾雷德帕尔默 赐予了我们惊人的 表单ik 图书馆和造型又很棒.

向BBB技术的迁移

注意, 此软件包已迁移到 org : BBB 技术。这唯一真正的区别 表示包需要安装一个新的命令,由org的 sult(即. npm i --save-dev @bbbtech/storybook-formik(中文(简体) ) 并更新您主.js中注册软件包时的路径.

这也意味着所有未来的版本都会在新软件包下发布,所以请迁移您的依赖性,如果你 想要获得未来的版本.

安装

npm install --save-dev @bbbtech/storybook-formik

然后注册加词 .storybook/main.js

module.exports = {
  stories: ['../stories/**/*.stories.tsx'],
  addons: ['@bbbtech/storybook-formik/register'],
};

使用量

假设您将表格分成较小的、可重复使用的组件, 而这些“ 子格式” 依赖于 formik 上下文, 每一个 子窗体可能用来建立更大的窗体,但您仍然想要测试并独立运行. 你可以用Formik的电脑 装饰器,这样我们就可以将子窗体包入一个Formik组件,它会将上下文传递为正常.

鉴于一个简单的子形式 :

import React from 'react';
import { Field } from 'formik';

const PersonalInfoSubform = () => (
  <div>
    <Field name="forename" type="input" />
    <Field name="surname" type="input" />
  </div>
);

export default PersonalInfoSubform;

你再加一个 withFormik 装饰您的故事并可以传递任何 Formik 道具作为个别故事的参数.

export const personalInfoSubform = () => (
  <>
    <p>
      The decorator can wrap Components that include Fields (or anything else
      expecting Formik context). This allows us to better componentise our
      larger forms.
    </p>
    <PersonalInfoSubForm />
  </>
);
personalInfoSubform.decorators = [withFormik];
// can use the DecoratorParams type and pass a type for type-safety of initialValues
const personalInfoParams: DecoratorParams<PersonalInfo> = {
  formik: {
    initialValues: personalInfoInitialValues,
    validationSchema: personalInfoValidationSchema,
  },
};
personalInfoSubform.parameters = personalInfoParams;

这使得您能够渲染Formik Fields , 期望Formik上下文, 但也能够跟踪关键formik状态 在下面的故事书面板.

见 实例故事 其他例子

遗留故事格式

示例 storiesOf 语法.

import { storiesOf } from '@storybook/react';
import withFormik from '@bbbtech/storybook-formik';

import PersonalInfoSubform from '<your_component_path>/PersonalInfoSubform';

storiesOf('Example', module)
  .addDecorator(withFormik)
  .add('default', () => <PersonalInfoSubform />, {
    formik: {
      initialValues: {
        forename: 'John',
        surname: 'Johnerson',
      },
    },
  });

参数

你可以通过任何 Formik 组件道具(初始Values,验证Schema,验证OnBlur等)作为故事的参数. 这些道具必须在 formik 参数键.

如果没有提供初始值, { enableReinitialize: true, initialValues: StoryContext.args || {} } 将被使用.

export const myTextInput = () => (
  <MyTextInput
    name="formikTweet"
    label="Describe formik in 80 characters"
    placeholder="I love formik because..."
  />
);
myTextInput.parameters = {
  formik: {
    initialValues: {
      formikTweet: '',
    },
    validationSchema: someSchema,
    onSubmit: v => console.log('I want to log these... ', v),
  },
};

formik.castValues 与 formik.validationSchema

如果有的话 validationSchema 载于 formik 配置和 { castValues: true },则 validationSchema.cast(initialValues || StoryContext.args || {}) 将调用,结果作为 initialValues。 。 。 .

如果窗体字段需要给其值以一定格式,或者当自动转换时,此功能是有用的 StoryContext.args 变成有效的一组 initialValues。 。 。 .

使用控件

如果使用 @storybook/addon-essentials 财务报告和审定财务报表 StoryContext.args, (中文(简体) ), withFormik 将窗体值与故事本控件同步.

export const myTextInput = () => (
  <MyTextInput
    name="formikTweet"
    label="Describe formik in 80 characters"
    placeholder="I love formik because..."
  />
);
myTextInput.args = {
  formikTweet: '',
};
myTextInput.parameters = {
  formik: {
    validationSchema: someSchema,
    onSubmit: v => console.log('I want to log these... ', v),
  },
};

性质示例

随着时间的推移,我将增加更成熟的例子,以显示子形式模式在更大范围内的有用性。 有谁 如有好的例子,请提交.

捐款

发展

您可以通过本地构建软件包来测试更改 。 流动会是这样的:

  • 更改为加词
  • npm run build:watch - 以监视模式在本地建立 dist 捆绑
  • npm run storybook - 以示例形式运行软件包故事本,在此预览更改
  • npm run test - 运行单元测试

发布新版本

部署非常简单,你只需要: npm version,并指定新版本,这将 踢出套件中定义的相关生命周期脚本. json(包括 npm publish 输入 postversion 脚本)

版本与发布记录

@bbbtech/storybook-formik 共发布 4 个版本,首次发布于 2022/06/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.0.0latest2025/01/251.8 年前
3.0.02023/09/083 年前
2.6.02023/04/063 年前
2.5.02022/06/204 年前

关于 @bbbtech/storybook-formik 的常见问题

@bbbtech/storybook-formik 是什么?

故事书的附加内容允许您在故事中使用依赖Formik上下文的组件,并在面板中看到内部的Formik状态.

如何安装 @bbbtech/storybook-formik?

在项目目录运行 npm install @bbbtech/storybook-formik,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:formik(^1.0.0||^2.0.0)、react(*)、react-dom(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bbbtech/storybook-formik 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bbbtech/storybook-formik 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bbbtech/storybook-formik 可以商用吗?

@bbbtech/storybook-formik 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bbbtech/storybook-formik 的下载量有多少?

根据 npm 官方下载统计,@bbbtech/storybook-formik 在 2026/10/08 – 2026/11/06 这 30 天内被下载 42,450 次,日均约 1,415 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bbbtech/storybook-formik 还在维护吗?

最新版本 4.0.0 发布于 2025/01/25(1.8 年前);至今共发布 4 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/06/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。