Storybook

๊น€๋‚จ๊ฒฝยท2022๋…„ 12์›” 26์ผ

react

๋ชฉ๋ก ๋ณด๊ธฐ
14/37

์˜๋ฏธ

๐Ÿ’ก CDD๋ฅผ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ์ธ Component Explorer ๋“ฑ์žฅ
๐Ÿ’ก Component Explorer์˜ UI ๊ฐœ๋ฐœ ๋„๊ตฌ ์ค‘์˜ ํ•˜๋‚˜
๐Ÿ’ก ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋”ฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

ํŠน์ง•

๐Ÿ’ก ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ™•๋Œ€ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฌธ์„œํ™”
๐Ÿ’ก ์ž๋™์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์ƒํƒœ ํ™•์ธ ๊ฐ€๋Šฅ(๋ฒ„๊ทธ ์‚ฌ์ „ ์˜ˆ๋ฐฉ ๊ธฐ๋Šฅ)
๐Ÿ’ก ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ด
๐Ÿ’ก ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜์กด์„ฑ์„ ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ ๊ฐ€๋Šฅ

์ง€์›๊ธฐ๋Šฅ

-UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์นดํƒˆ๋กœ๊ทธํ™”
-์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”๋ฅผ stories๋กœ ์ €์žฅ
-ํ•ซ ๋ชจ๋“ˆ, ์žฌ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ๊ฐœ๋ฐœ ํˆด ๊ฒฝํ—˜ ์ œ๊ณต
-๋ฆฌ์—‘ํŠธ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ทฐ ๋ ˆ์ด์–ด ์ง€์›

์‚ฌ์šฉ์˜ˆ์‹œ

๐Ÿ“— ์„ค์น˜

npx storybook init

๐Ÿ“— ์ž‘์„ฑ

//Text.js
import React from "react";

const Text = ({title, color}) => (
	<h1 style={{color: color}}>{title}</h1>
);

export default Text;

//Text.stories.js(storiesํด๋” ์•ˆ์—)
import Text from "./Text";

export default {
	title : "A/Text",
  	component: Text,
  	argTypes: {
    	title: {control : "text"},
      	color: {control : "text"}
    }
}

const Template = (args) => <Text {...args}/>

//๊ฐœ๋ณ„
export const BlueText = Template.bind({});
BlueText.args={
	title: "B",
  	color: "blue"
}
profile
๊ธฐ๋ณธ์— ์ถฉ์‹คํ•˜๋ฉฐ ์•ž์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š”

0๊ฐœ์˜ ๋Œ“๊ธ€