๐ ์์ ์ดํด๋ณด๊ธฐ
์คํ ๋ฆฌ๋ถ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด control prop์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋๊ธฐํ์ํค๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์์๋ฅผ ์ํด ์ง๋ ์ปดํฌ๋ํธ๊ฐ ์๊ณ , ๋ง์ปค ํด๋ฆญ ์ ํ์ฑํ๋๋ ๋ง์ปค ID ๊ฐ ๋ณ๊ฒฝ๋๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
์ด ์ปดํฌ๋ํธ๋ ๋ค์๊ณผ ๊ฐ์ ์คํ ๋ฆฌ๋ฅผ ๊ฐ์ง ๊ฒ์ ๋๋ค.
import { Map } from './map'
const meta = {
component: Map
}
export default meta
const mock = [
{ id: '1', poi: {/** some data */} },
{ id: '2', poi: {/** some data */} },
{ id: '3', poi: {/** some data */} },
// ...
]
const options = mock.map((option) => option.id)
export const BasicStory = {
render: (args) => <Map {...args} />,
argTypes: {
activeId: {
control: 'select',
options,
}
},
args: {
activeId: options[0],
pois: mock,
}
}
์คํํด๋ณด๋ฉด control panel ์์ activeId
๋ฅผ ๋ณ๊ฒฝํ ๋์ ๋ฌ๋ฆฌ ์ง๋ ๋ง์ปค๋ฅผ ์ง์ ํด๋ฆญํ ๊ฒฝ์ฐ์๋ activeId
args๋ ๋ณ๊ฒฝ๋์ง ์๊ณ Map ์ปดํฌ๋ํธ์ ์ํ๊ฐ๋ง ๋ด๋ถ์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๐ useArgs ํ์ฉํ๊ธฐ
์คํ ๋ฆฌ๋ถ์์ ์ ๊ณตํ๋ useArgs
Hook ์ ์ฌ์ฉํ๋ฉด args ๋ฅผ ๋๊ธฐํํ ์ ์์ต๋๋ค.
๋ ๋๋งํ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๋ Story
์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ useArgs
๋ก arg ๋ฅผ ์ง์ ๋ณ๊ฒฝํฉ๋๋ค.
const Story = (args) => {
const [{ activeId }, updateArgs] = useArgs()
const handleSelect = (id) => updateArgs({ activeId: id })
return <Map {...args} activeId={activeId} onSelect={handleSelect} />
}
const BasicStory = {
render: Story,
// ...
}
๐ ์ ์ฉ ๊ฒฐ๊ณผ
์ด์ ํด๋ฆญ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์ ํ๋ ์ฅ์์ ID ์ ๋ง์ถฐ activeId
๋ ํจ๊ป ๋ณ๊ฒฝ๋๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
Changing args values / state in Storybook (without useState hook)
'๐จโ๐ป web.dev > fe' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Vanilla JS ๋ก FigJam ์น์ฑ ๋ง๋ค๊ธฐ (1) | 2024.01.23 |
---|---|
Canvas ๋ํ ํ์ ์ ์๋ฆฌ์ ๊ตฌํ ๋ฐฉ๋ฒ (1) | 2023.08.29 |
Web Component์ ํจ๊ป ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ (0) | 2023.08.25 |
Storybook loaders ๋ก story์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฃผ์ ํ๊ธฐ (0) | 2023.06.24 |
Storybook ์์ ์ปดํฌ๋ํธ ๋จ์ ํ ์คํธํ๊ธฐ (0) | 2023.06.24 |
๐ฌ ๋๊ธ