如何在 Storybook 的组件故事格式 (CSF) 中重用旋钮?
How do I reuse knobs in Storybook's Component Story Format (CSF)?
我有一个包含多个故事的简单 Button
组件。所有这些故事都需要相同的旋钮配置。
这种方法有效:
export const Default = () => <Button size={select('size', ['x-large', 'normal', 'x-small'], 'x-small')}>Button</Button>;
export const Disabled = () => <Button disabled size={select('size', ['x-large', 'normal', 'x-small'], 'x-small')}>Button</Button>;
export const Outline = () => <Button outline size={select('size', ['x-large','normal', 'x-small'], 'x-small')}>Button</Button>;
但是,我不想一遍又一遍地重复select
语句。我试过传播,像这样:
const knobs = {
size: select('size', ['x-large', 'normal', 'x-small'], 'x-small')
};
export const Default = () => <Button {...knobs}>Button</Button>;
export const Disabled = () => <Button disabled {...knobs}>Button</Button>;
export const Outline = () => <Button outline {...knobs}>Button</Button>;
但不起作用:旋钮显示在 UI 中,但是当我更新下拉列表时,新值未传递给旋钮。
我做错了什么?
显然,当您将 props 作为函数传播时,这很有效。这就是我最终使事情正常进行的方式:
const knobs = () => ({
size: select('size', ['x-large', 'normal', 'x-small'], 'x-small')
});
export const Default = () => <Button {...knobs()}>Button</Button>;
export const Disabled = () => <Button disabled {...knobs()}>Button</Button>;
export const Outline = () => <Button outline {...knobs()}>Button</Button>;
你能试试这个吗:
const knobs = {
size: () => select('size', ['x-large', 'normal', 'x-small'], 'x-small')
};
我有一个包含多个故事的简单 Button
组件。所有这些故事都需要相同的旋钮配置。
这种方法有效:
export const Default = () => <Button size={select('size', ['x-large', 'normal', 'x-small'], 'x-small')}>Button</Button>;
export const Disabled = () => <Button disabled size={select('size', ['x-large', 'normal', 'x-small'], 'x-small')}>Button</Button>;
export const Outline = () => <Button outline size={select('size', ['x-large','normal', 'x-small'], 'x-small')}>Button</Button>;
但是,我不想一遍又一遍地重复select
语句。我试过传播,像这样:
const knobs = {
size: select('size', ['x-large', 'normal', 'x-small'], 'x-small')
};
export const Default = () => <Button {...knobs}>Button</Button>;
export const Disabled = () => <Button disabled {...knobs}>Button</Button>;
export const Outline = () => <Button outline {...knobs}>Button</Button>;
但不起作用:旋钮显示在 UI 中,但是当我更新下拉列表时,新值未传递给旋钮。
我做错了什么?
显然,当您将 props 作为函数传播时,这很有效。这就是我最终使事情正常进行的方式:
const knobs = () => ({
size: select('size', ['x-large', 'normal', 'x-small'], 'x-small')
});
export const Default = () => <Button {...knobs()}>Button</Button>;
export const Disabled = () => <Button disabled {...knobs()}>Button</Button>;
export const Outline = () => <Button outline {...knobs()}>Button</Button>;
你能试试这个吗:
const knobs = {
size: () => select('size', ['x-large', 'normal', 'x-small'], 'x-small')
};