Guest User

Untitled

a guest
Jul 17th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. import React from 'react';
  2. import { Route, Link } from 'react-router-dom'
  3. import { Switch } from 'react-router'
  4. import universal from 'react-universal-component'
  5. import '../nav.css'
  6.  
  7. const UniversalComponent = universal((props) => import(`./${props.page}`))
  8.  
  9. export default (props) => (
  10. <div>
  11. <div className="nav">
  12. <Link to="/about">About</Link>
  13. <Link to="/">Gallery</Link>
  14. <Link to="/article/bio">Article - bio</Link>
  15. </div>
  16. <Switch>
  17. <Route exact path="/">
  18. <UniversalComponent page="Gallery" />
  19. </Route>
  20. <Route path="/article/:slug"
  21. render={({ staticContext, match }) => {
  22. const site = staticContext ? staticContext.site : location.hostname.split('.')[0]
  23. return <UniversalComponent page="Article" data={props.data} site={site} match={match} />
  24. }}
  25. />
  26. <Route path="/about"
  27. render={({ staticContext }) => {
  28. const site = staticContext ? staticContext.site : location.hostname.split('.')[0]
  29. return <UniversalComponent page="About" data={props.data} site={site} />
  30. }}
  31. />
  32. <Route>
  33. <UniversalComponent page="NotFound" />
  34. </Route>
  35. </Switch>
  36. </div>
  37. )
  38.  
  39. import React from 'react'
  40. import { connect } from 'react-redux'
  41. import NotFound from './NotFound'
  42. import '../css/Article.css'
  43. import { fetchArticle } from '../actions';
  44.  
  45. class Article extends React.Component {
  46. constructor(props) {
  47. super(props)
  48. this.state = {}
  49. }
  50.  
  51. componentDidMount() {
  52. this.props.fetchArticle(this.props.site, this.props.match.params.slug)
  53. }
  54.  
  55. render() {
  56. const siteConfig = require(`../../data/${this.props.site}/siteConfig`)
  57. const imagePath = require(`../images/${siteConfig.aboutImage}`)
  58. require(`../css/${this.props.site}/theme.css`)
  59.  
  60. try {
  61. const markdownData = require(`../../data/${this.props.site}/${this.props.match.params.slug}.md`)
  62.  
  63. return (
  64. <div className="article">
  65. <h1>{this.props.title}</h1>
  66. <img src={imagePath} alt="" />
  67. <div className="content">{ markdownData.title }</div>
  68. <div className="content">{ markdownData.author }</div>
  69. <div className="content" dangerouslySetInnerHTML={{ __html: this.props.__content }} />
  70. </div>
  71. )
  72. } catch (err) {
  73. return <NotFound />
  74. }
  75. }
  76. }
  77.  
  78. const mapStateToProps = (state) => ({
  79. title: state.text,
  80. __content: state.content
  81. })
  82.  
  83. export default connect(mapStateToProps, { fetchArticle })(Article)
Add Comment
Please, Sign In to add comment