рдореИрдВ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
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
рдЖрдкрдХреЛ 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 ({рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ: ['/']})
рдПрдбрдбреЗрдХреЛрд░реЗрдЯрд░ (рдХрд╣рд╛рдиреА =>
рдПрдбрдбреЗрдХреЛрд░реЗрдЯрд░ (рдХрд╣рд╛рдиреА => (
))
``
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЛ
addDecorator
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдХрд╣рд╛рдиреА рдХреЛMemoryRouter
рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдПрдХ рдЕрдВрд╢ рд╣реИ:рдЖрдк рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: https://blog.hichroma.com/graphql-react-tutorial-part-5-6-ac36b6962a8a