Storybook-ը թույլ է տալիս հեշտությամբ նախատիպել բաղադրիչները տարբեր պարամետրերով:
Այս հոդվածում մենք կանդրադառնանք, թե ինչպես աշխատել դեկորատորների հետ Storybook-ով:
Դեկորատորներ
Դեկորատորը պատմություններ փաթաթելու միջոց է լրացուցիչ մատուցման ֆունկցիոնալությամբ:
Փաթեթավորեք պատմությունները լրացուցիչ նշագրման միջոցով
Մենք կարող ենք պատմությունները փաթեթավորել լրացուցիչ նշումներով դեկորատորներով:
Օրինակ՝ կարող ենք գրել.
src/stories/Button.stories.js
import React from 'react'; import { Button } from './Button'; export default { title: 'Example/Button', component: Button, argTypes: { backgroundColor: { control: 'color' }, }, decorators: [(Story) => <div style={{ margin: '20px' }}><Story /></div>] }; const Template = (args) => <Button {...args} />; export const Primary = Template.bind({}); Primary.args = { primary: true, label: 'Button', }; export const Secondary = Template.bind({}); Secondary.args = { label: 'Button', }; export const Large = Template.bind({}); Large.args = { size: 'large', label: 'Button', }; export const Small = Template.bind({}); Small.args = { size: 'small', label: 'Button', };
Մենք ունենք decorators
հատկություն՝ ֆունկցիաների զանգվածով, որը ներկայացնում է բաղադրիչները մեր բաղադրիչի շուրջ:
Story
-ն այն բաղադրիչն է, որը մենք ներկայացնում ենք մեր պատմության մեջ:
Ծաղրելու համատեքստ
Մենք կարող ենք գլոբալ մասշտաբով մեր բաղադրիչը փաթաթել ավելի բարձր կարգի բաղադրիչով:
Օրինակ՝ կարող ենք գրել.
.storybook/preview.js
import { ThemeProvider } from 'styled-components'; export const decorators = [ (Story) => ( <ThemeProvider theme="default"> <Story /> </ThemeProvider> ), ];
ThemeProvider
HOC-ը ոճավորված բաղադրիչներից փաթաթելու համար մեր պատմությունների բաղադրիչների շուրջ:
Պատմվածքների դեկորատորներ
Մենք կարող ենք ավելացնել դեկորատորներ, որոնք հասանելի են պատմության մեջ:
Այն ավելացնելու համար մենք պարզապես ավելացնում ենք decorators
հատկությունը մեր story օբյեկտին.
src/stories/Button.stories.js
import React from 'react'; import { Button } from './Button'; export default { title: 'Example/Button', component: Button, argTypes: { backgroundColor: { control: 'color' }, }, }; const Template = (args) => <Button {...args} />; export const Primary = Template.bind({}); Primary.args = { primary: true, label: 'Button', }; Primary.decorators = [(Story) => <div style={{ margin: '20px' }}><Story /></div>]
դեկորատորների զանգվածին վերագրել Primary
պատմվածքի decorators
հատկությունը:
Բաղադրիչների դեկորատորներ
Մենք կարող ենք դեկորատորներ տեղադրել բաղադրիչի բոլոր պատմությունների վրա:
Դա անելու համար մենք decorators
հատկությունը դնում ենք այն օբյեկտում, որը արտահանում ենք.
src/stories/Button.stories.js
import React from 'react'; import { Button } from './Button'; export default { title: 'Example/Button', component: Button, argTypes: { backgroundColor: { control: 'color' }, }, decorators: [(Story) => <div style={{ margin: '20px' }}><Story /></div>] };
Գլոբալ դեկորատորներ
Մենք կարող ենք ավելացնել գլոբալ դեկորատորներ .storybook/preview.js
ֆայլում՝ արտահանելով այն.
import React from 'react'; export const decorators = [(Story) => <div style={{ margin: '20px' }}><Story /></div>]
Մենք արտահանում ենք decorators
զանգվածը՝ այն ամենուր կիրառելու համար:
Դեկորատորի ժառանգություն
Դեկորատորները կիրառվում են կոնկրետ հերթականությամբ:
Համաշխարհայինները կիրառվում են այն հաջորդականությամբ, որով նրանք նախապես սահմանված են:
Այնուհետև բաղադրիչների դեկորատորները կիրառվում են իրենց սահմանված կարգով:
Եվ պատմվածքների դեկորատորները կիրառվում են իրենց սահմանված կարգով:
Եզրակացություն
Դեկորատորները մեզ թույլ են տալիս լրացուցիչ նշումներ ավելացնել մեր բաղադրիչին և ներկայացնել դրանք Storybook-ում: