Storybook中Checkbox组件checked属性控件显示异常,如何展示预期值?
解决方案
Storybook自动推断boolean | 'indeterminate'这类混合联合类型时容易出现识别偏差,需要手动配置Controls参数来修正:
方法一:手动配置argTypes(推荐)
在stories文件中添加argTypes字段,为checked属性指定下拉选择器和可选值:
import React from 'react'; import { ComponentStory, ComponentMeta } from '@storybook/react'; import 'bootstrap/dist/css/bootstrap.css'; import Checkbox from './Checkbox'; export default { title: 'Components/Blocks/Checkboxs/Checkbox', component: Checkbox, argTypes: { checked: { control: { type: 'select', options: [true, false, 'indeterminate'], }, description: '控制复选框状态:选中(true)、未选中(false)、半选("indeterminate")', }, }, } as ComponentMeta<typeof Checkbox>; const Template: ComponentStory<typeof Checkbox> = args => <Checkbox {...args} />; export const CheckboxComponent = Template.bind({}); // 可选:设置默认参数 CheckboxComponent.args = { checked: false, };
方法二:通过JSDoc增强类型推断
在组件的Props类型上添加注释,帮助Storybook更准确识别联合类型:
export type CheckboxProps = { // ...其他属性 /** * 复选框状态:选中(true)、未选中(false)、半选("indeterminate") * @type {boolean | 'indeterminate'} */ checked?: boolean | 'indeterminate'; // ...其他属性 };
这种方法对复杂联合类型的支持稳定性不如手动配置,仅作为补充方案。
效果验证
修改完成后,Storybook Controls面板中的checked属性会变为下拉选择框,直接列出true、false、indeterminate三个合法值,用户可直接选择,无需手动输入JSON格式内容。
内容的提问来源于stack exchange,提问作者Li 1001
相关产品推荐
相关产品推荐

