UNPKG

koa-web-kit

Version:

A modern, production-ready, and full-stack node web framework

80 lines (71 loc) 1.88 kB
import React from 'react'; import { Route, Switch } from 'react-router-dom'; import loadable from '@loadable/component'; import PropTypes from 'prop-types'; import Home from 'components/Home'; import Hello from 'components/Hello'; import Hello2 from 'components/Hello2'; import { AppContext } from 'modules/context'; const Loading = <h3>Loading...</h3>; /*const Loading = ({ pastDelay, error }) => { if (error) { console.log(error); return error.msg || 'OOPS!'; } return pastDelay ? <h3>Loading...</h3> : null; };*/ const HelloAsyncLoadable = loadable( () => import( /* webpackChunkName: "components_Hello_async" */ 'components/HelloAsync' ), { fallback: Loading, } ); const Github = loadable( () => import(/* webpackChunkName: "components_Github" */ 'components/Github'), { fallback: Loading, } ); function AppRoutes({ context, initialData }) { const { Provider } = AppContext; return ( <Switch> <Route exact path="/hello-context" render={props => ( <React.Fragment> <Provider value={context}> <Hello2 {...props} /> </Provider> <hr /> <p className="text-center"> Below is default value from AppContext </p> <Hello2 {...props} /> </React.Fragment> )} /> <Route exact path="/github" render={props => <Github branches={initialData.github} {...props} />} /> <Route exact path="/hello/sync" component={Hello} /> <Route exact path="/hello/async" render={props => <HelloAsyncLoadable {...props} />} /> <Route path="/" component={Home} /> </Switch> ); } AppRoutes.propTypes = { initialData: PropTypes.object, context: PropTypes.any, }; export default AppRoutes;