Storybook: рдЗрдирд▓рд╛рдЗрди рдХреЛрдб (рдмреИрдХрдЯрд┐рдХ `) рдХреЗ рд╕рд╛рде рдЬрд╛рдирдХрд╛рд░реА рдПрдбрдСрди рдорд╛рд░реНрдХрдбрд╛рдЙрди рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЕрдЧре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: storybookjs/storybook

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

  • @storybook/react v3.2.4
  • @storybook/addon-info v3.2.4

рдЙрджрд╛рд╣рд░рдг рдЗрдирдкреБрдЯ

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐

storiesOf('Button').addWithInfo(
  'simple usage (custom propTables)',
  `
      This is the basic usage with the button with providing a label to show the text.
      Since, the story source code is wrapped inside a div, info addon can't figure out propTypes on it's own.
      So, we need to give relevant React component classes manually using \`propTypes\` option as shown below:
      ~~~js
      storiesOf('Button')
        .addWithInfo(
          'simple usage (custom propTables)',
          <info>,
          <storyFn>,
          { inline: true, propTables: [Button]}
        );
      ~~~
    `,
  () => (
    <div>
      <Button label="The Button" onClick={action('onClick')} />
      <br />
    </div>
  ),
  { inline: true, propTables: [Button] }
);

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ propTypes рдмреИрдХрдЯрд┐рдХреНрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рдд рдЙрддреНрдкрд╛рджрди

propTypes рд╢рдмреНрдж рдореЛрдиреЛрд╕реНрдкреЗрд╕реНрдб рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдпрд╣ рдЬрд┐рд╕ рд╡рд╛рдХреНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдореМрдЬреВрджрд╛ рдЙрддреНрдкрд╛рджрди

рд╢рдмреНрдж propTypes рдПрдХ рдЦрд╛рд▓реА <pre><code></code></pre> рддрддреНрд╡ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

Screenshot

рд╕рдВрджрд┐рдЧреНрдз рдХрд╛рд░рдг

  1. рдмреИрдХрдЯрд┐рдХ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдШрдЯрдХ <Code> , рдЬрд┐рд╕реЗ <code> рдЕрдВрджрд░ <pre> рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдмреНрд▓реЙрдХ рддрддреНрд╡ рд╣реИ рдЬреЛ рд╡рд╛рдХреНрдп рдХреЛ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред
  2. <Code> this.props.code рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреЗрдХреНрд╕реНрдЯ this.props.children ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ code рдЗрдирд▓рд╛рдЗрди рдФрд░ рдмреНрд▓реЙрдХ рдХреЛрдб рдЕрдиреБрднрд╛рдЧреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрдирд▓рд╛рдЗрди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ props.children рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП props.code

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@MrOrz рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЗрд╕ рдкреАрдЖрд░ #1501 рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ

рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рд╕реБрдирдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛!

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ marksyConf рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкреАрдЖрд░ рдкрд░ рдХреЛрдИ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реИ, рдЕрдкрдирд╛ рд╕рдордп рд▓реЗрдВ;)

рдЙрджрд╛:


import React from 'react';
import { configure } from '@storybook/react';
import { setDefaults } from '@storybook/addon-info';

function Code({ children }) {
  return <code>{children}</code>;
}

function loadStories() {/* loading stories here */}

setDefaults({ marksyConf: { code: Code } });
configure(loadStories, module);

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ code рдЗрдирд▓рд╛рдЗрди рдФрд░ рдмреНрд▓реЙрдХ рдХреЛрдб рдЕрдиреБрднрд╛рдЧреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрдирд▓рд╛рдЗрди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ props.children рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП props.code

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tirli picture tirli  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rpersaud picture rpersaud  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ericterpstra picture ericterpstra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sakulstra picture sakulstra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zvictor picture zvictor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ