Storybook: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде рдШрдЯрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: storybookjs/storybook

рдореИрдВ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг

import React from 'react'
import PropTypes from 'prop-types'
import { Link } from 'react-router-dom'
import Brand from './components'

const Logo = ({children}) => {
  return (
    <Link to='/'>
      <Brand>
        {children}
      </Brand>
    </Link>
  )
}

Logo.propTypes = {
  children: PropTypes.string.isRequired
}

export default Logo

рддреНрд░реБрдЯрд┐

screen shot 2017-04-14 at 4 27 22 am

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

рдЖрдкрдХреЛ addDecorator рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдХрд╣рд╛рдиреА рдХреЛ MemoryRouter рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдПрдХ рдЕрдВрд╢ рд╣реИ:

storiesOf('Logo', module)
  .addDecorator(story => (
      <MemoryRouter initialEntries={['/']}>{story()}</MemoryRouter>
  ))
  .add('normal', () => <Logo />)

рдЖрдк рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: https://blog.hichroma.com/graphql-react-tutorial-part-5-6-ac36b6962a8a

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

рдЖрдкрдХреЛ addDecorator рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдХрд╣рд╛рдиреА рдХреЛ MemoryRouter рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдПрдХ рдЕрдВрд╢ рд╣реИ:

storiesOf('Logo', module)
  .addDecorator(story => (
      <MemoryRouter initialEntries={['/']}>{story()}</MemoryRouter>
  ))
  .add('normal', () => <Logo />)

рдЖрдк рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: https://blog.hichroma.com/graphql-react-tutorial-part-5-6-ac36b6962a8a

рдпрджрд┐ рдЖрдк рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/storybooks/react-storybook/issues/485#issuecomment -294105214

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рдЦреЛрдЬ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрдард┐рди рд╕рдордп рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЕрднреА рдкреЗрд╕реНрдЯ рдХрд░рдирд╛:

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'рдЗрддрд┐рд╣рд╛рд╕' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'рдЗрддрд┐рд╣рд╛рд╕' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛
Link.render рдкрд░ (http://localhost:9001/static/preview.bundle.js:52878:35)
http://localhost :9001/static/preview.bundle.js:43410:21 . рдкрд░
рдорд╛рдк рдкрд░ LifeCyclePerf (http://localhost:9001/static/preview.bundle.js:42690:12)
ReactCompositeComponentWrapper._renderValidatedComponentWithOwnerOrContext рдкрд░ (http://localhost:9001/static/preview.bundle.js:43409:25)
ReactCompositeComponentWrapper._renderValidatedComponent рдкрд░ (http://localhost:9001/static/preview.bundle.js:43436:32)
ReactCompositeComponentWrapper.performInitialMount рдкрд░ (http://localhost:9001/static/preview.bundle.js:42976:30)
ReactCompositeComponentWrapper.mountComponent рдкрд░ (http://localhost:9001/static/preview.bundle.js:42872:21)
Object.mountComponent рдкрд░ (http://localhost:9001/static/preview.bundle.js:4438:35)
ReactDOMComponent.mountChildren рдкрд░ (http://localhost:9001/static/preview.bundle.js:42241:44)
ReactDOMComponent._createInitialChildren рдкрд░ (http://localhost:9001/static/preview.bundle.js:40403:32)

рдореБрдЭреЗ MemoryRouter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ MemoryRouter undefined рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░ рдЖ рд░рд╣рд╛ рд╣реИред

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in.
Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in.
    at invariant (http://localhost:6006/static/preview.bundle.js:2056:15)
    at createFiberFromElementType (http://localhost:6006/static/preview.bundle.js:27773:5)
    at createFiberFromElement (http://localhost:6006/static/preview.bundle.js:27718:15)
    at reconcileSingleElement (http://localhost:6006/static/preview.bundle.js:28966:19)
    at reconcileChildFibers (http://localhost:6006/static/preview.bundle.js:29065:35)
    at reconcileChildrenAtPriority (http://localhost:6006/static/preview.bundle.js:29715:30)
    at reconcileChildren (http://localhost:6006/static/preview.bundle.js:29706:5)
    at finishClassComponent (http://localhost:6006/static/preview.bundle.js:29842:5)
    at updateClassComponent (http://localhost:6006/static/preview.bundle.js:29814:12)
    at beginWork (http://localhost:6006/static/preview.bundle.js:30193:16)

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдирдорд╕реНрдХрд╛рд░ @oyeanuj ,
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрд╝рдмрд░? Route рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдмрд╣реБрдд рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред

@aperkaz рдореИрдВ рдЗрд╕реЗ рдЕрднреА рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ :( рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рднреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛ ..

рдЖрдк рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд @shilman рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ 4.1.1 рдФрд░ @storybook/react v 3.3.8 . рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ 3 рдХреЗ рд▓рд┐рдП:

// ...
import { Router, Route } from 'react-router';
import createMemoryHistory from 'react-router/lib/createMemoryHistory';

storiesOf('Foo', module)
  .addDecorator(story => (
    <Router history={createMemoryHistory('/')}>
      <Route path="/" component={() => story()} />
    </Router>
  ))
  .add('Default', () => <Foo />);

рд╕реНрд╡реАрдХреГрдд рдЙрддреНрддрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ

Uncaught ReferenceError: ___loader is not defined

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдорджрдж

рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣рд╛рдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЧреБрдЧрд▓реА рдХрд░рдиреЗ рдФрд░ рдмрд╛рд▓реЛрдВ рдХреЛ рдлрд╛рдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред

рдореИрдВ рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЙрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг react-router (рдЬреЛ package.json рдореЗрдВ "^ 4.1.1" рдкрд░ рдерд╛) рдФрд░ react-router-dom (рдЬреЛ "рдЕрдЧрд▓рд╛" рдкрд░ рдерд╛) рдХреЗ рдмреАрдЪ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рдерд╛ред

рдЗрд╕рдиреЗ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ this.context рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ react-router-dom рд╕реВрдЯ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред рдпрд╣ рдореЗрд░реЗ <Link /> рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ, рдЬреЛ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрдн рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛, рдФрд░ рдЕрд╕рд╛рдзрд╛рд░рдг рд░реВрдк рд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА "рдЖрдкрдХреЛ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП" рдмрд╛рд╣рд░ рдПрдХ" рддреНрд░реБрдЯрд┐ред

рдореИрдВрдиреЗ "react-router-dom": "next" рдХреЛ "react-router-dom": "^4.1.1" рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред

рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХреА рд╡рд╣ рдпрд╣ рдкреИрдХреЗрдЬ рдерд╛: https://github.com/gvaldambrini/storybook-router/

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдиреЗ рдорджрдж рдХреА

рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП:

```
рдЖрдпрд╛рдд { createMemoryHistory } 'рдЗрддрд┐рд╣рд╛рд╕' рд╕реЗ
'рд░рд┐рдПрдХреНрд╢рди-рд░рд╛рдЙрдЯрд░-рдбреЛрдо' рд╕реЗ {рд░рд╛рдЙрдЯрд░, рд░реВрдЯ} рдЖрдпрд╛рдд рдХрд░реЗрдВ

рдХрд╛рд╕реНрдЯ рдЗрддрд┐рд╣рд╛рд╕ = createMemoryHistory ({рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ: ['/']})

рдПрдбрдбреЗрдХреЛрд░реЗрдЯрд░ (рдХрд╣рд╛рдиреА =>)

рдПрдбрдбреЗрдХреЛрд░реЗрдЯрд░ (рдХрд╣рд╛рдиреА => (


))
``

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

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

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

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

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

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

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