我們先建立好 storybook 來放置我們設計好的組件,可以參考 story book。
到專案目錄下執行:
npx -p @storybook/cli sb init
安裝完後可以看到 package.json 中多了兩個 script
script: {
...
"storybook": "start-storybook -p 6006 -s public",
"build-storybook": "build-storybook -s public"
}
Start Storybook
執行下列指令就可以看到 storybook的畫面羅
yarn storybook
完成如下所示:
到我們的組件目錄下建立 stories.js
src/lib/Button/stories.js
import React, {Fragment} from 'react';
import Button from './index';
import theme from '../theme';
import ThemeProvider from "../ThemeProvider";
// 你的頁面標題
export default {
component: Button,
title: 'Button',
};
const styles = {
button: {
marginRight: 8
}
}
// 內部模板的內容
const Template = args => {
return (
<ThemeProvider theme={theme}>
<Fragment>
<Button type='filled' style={styles.button}>
Filled Button</Button>
<Button type='outline' style={styles.button}>Outline Button</Button>
<Button type='text' style={styles.button}>Text Button</Button>
</Fragment>
</ThemeProvider>
);
}
export const Default = Template.bind({});
// 傳入的參數
Default.args = {
type: 'filled',
};
接下來是參數的部分,非常方便只要把 propTypes 寫好並加上註解就行了:
Button.propTypes = {
/**
* Click event
*/
onClick: propTypes.func,
/**
* Styling object
*/
style: propTypes.object,
/**
* Style type
*/
type: propTypes.oneOfType(['filled', 'outline', 'text']),
};
Button.defaultProps = {
type: 'filled',
style: {},
onClick: () => false,
};
看起來真的非常漂亮又實用,覺得在設計組件的時候也可以參考storybook出來的內容,有點變向再要求程式碼要乾淨好閱讀。