I've had a frustrating Sprint with Storybook; as the dev who was working on it before put it:
I was trying to make that work - pull the args from prop definition - but wasn't able to get that working […] As I discovered, it could be explained by anything, including position of planets. At least that stable it felt. :-)
The Template.bind() method suggested in the docs ends up putting MDXCreateElement rather than the actual JSX component names behind the "Show code" button. Luckily this comment in a github ticket pointed to a way to fix it (even in pure MDX, some of the other suggestions assumed you were in jsx/tsx) by bypassing the bind.
A sample page I ended up with was
import { Meta } from '@storybook/addon-docs/blocks'; import { Checkbox } from './checkbox.component'; import { useState } from 'react'; import { Canvas, Story, ArgsTable } from '@storybook/addon-docs/blocks'; # Checkbox <Meta title='Components/Checkbox' component={Checkbox} /> <Canvas> <Story name='Example' args={{ label: 'Example' }}> {(args) => { const [checked, setChecked] = useState(false); return ( <Checkbox {...args} checked={checked} onChange={() => setChecked(!checked)} /> ); }} </Story> </Canvas> <ArgsTable story='Example' />
which uses useState to let the pure functional stateless component still do what QA expects it do when a user clicks on it...
No comments:
Post a Comment