加入直播会话:周四,美国东部时间上午 11 点,Storybook 9 发布及 AMA(问我任何问题)

Storybook MockDate 装饰器

在 Github 上查看

styled with prettier Github release version Commits since release npm release version

安装

适用于 Storybook 9.0+

npm i storybook-mock-date-decorator@3 -D

适用于 Storybook 6、7 或 8

npm i storybook-mock-date-decorator@2 -D

注意:如果您正在使用 Storybook 6、7 或 8,您必须使用 /legacy 导入路径。请参阅 v2.x README 以获取完整的用法说明。

API

将装饰器添加到您的 Storybook 后,您可以在故事中通过参数名称 date 配置日期。

用法

Storybook 9

import { mockDateDecorator } from "storybook-mock-date-decorator";

/** @type { import('@storybook/react').Preview } */
const preview = {
  decorators: [mockDateDecorator],
  parameters: {
    controls: {
      matchers: {
        color: /(background|color)$/i,
      },
    },
  },
};

export default preview;
// stories/Button.stories.js

export default {
  title: 'Example/Button',
  component: Button,
  parameters: {
    date: new Date(1999, 10, 24),
  },
};

export const Primary = {
  args: {
    primary: true,
    label: 'Button',
  },
  parameters: {
    date: new Date(2021, 1, 1),
  }
};

故事示例

然后,在您的 Storybook 中,您可以使用以下代码来模拟/冻结组件所有故事的日期

import { Meta } from "@storybook/react"
import { YourComponent } from "./your-component"

export default {
	title: "YourComponent",
	component: YourComponent,
	parameters: {
		date: new Date("March 10, 2021 10:00:00"),
	},
} as Meta

或者您可以模拟/冻结特定故事的日期

import { Meta } from "@storybook/react"
import { YourComponent } from "./your-component"

export default {
	title: "YourComponent",
	component: YourComponent,
} as Meta

export function Default() {
    return <div>hello world at {new Date().toLocaleString()}</div>
}

export function WithMockedDate() {
    return <div>hello world! with mocked date of March 10th at {new Date().toLocaleString()}</div>
}
WithMockedDate.parameters = {
    date: new Date("March 10, 2021 10:00:00"),
}

版本兼容性

Storybook 版本 包版本 导入路径 文档
9.0+ @3 storybook-mock-date-decorator 本 README
8.x @2 storybook-mock-date-decorator/legacy v2.x README
6.x, 7.x @2 storybook-mock-date-decorator/legacy v2.x README

重要提示:对于 Storybook 6、7 和 8,您必须使用 /legacy 导入路径,并遵循 v2.x 文档 中的设置说明。