Skip to content

Commit 19ee063

Browse files
committed
Wrap app in Found Router component
1 parent 6838bc6 commit 19ee063

File tree

8 files changed

+168
-63
lines changed

8 files changed

+168
-63
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
},
2121
"homepage": "git+https://github.com/spiegela/react-relay-modern-starter-kit.git",
2222
"dependencies": {
23+
"found": "^0.3.4",
2324
"found-relay": "next",
2425
"graphql-relay": "^0.5.2",
2526
"node-sass": "^4.5.3",

src/Components/App.js

+4-32
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,15 @@ import {
33
graphql,
44
QueryRenderer
55
} from 'react-relay'
6-
7-
import environment from '../Environment'
86
import Layout from './Layout'
97
import WidgetList from './WidgetList'
108

11-
const query = graphql`
12-
query AppQuery {
13-
viewer {
14-
...Layout_viewer
15-
...WidgetList_viewer
16-
}
17-
}`
18-
199
export default class App extends Component {
2010
render() {
2111
return(
22-
<QueryRenderer
23-
environment={environment}
24-
query={query}
25-
render={
26-
({error, props}) => {
27-
if (error) {
28-
return <div>{error.message}</div>;
29-
} else if (props) {
30-
return (
31-
<Layout viewer={props.viewer}>
32-
<WidgetList viewer={props.viewer}/>
33-
</Layout>
34-
);
35-
} else {
36-
return(
37-
<div>Loading....</div>
38-
);
39-
}
40-
}
41-
}
42-
/>
43-
);
12+
<Layout viewer={this.props.viewer}>
13+
<WidgetList viewer={this.props.viewer}/>
14+
</Layout>
15+
);
4416
}
4517
}

src/Components/__generated__/WidgetList_viewer.graphql.js

+39
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Router.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import React, {Component} from 'react'
2+
import BrowserProtocol from 'farce/lib/BrowserProtocol'
3+
import queryMiddleware from 'farce/lib/queryMiddleware'
4+
import createFarceRouter from 'found/lib/createFarceRouter'
5+
import createRender from 'found/lib/createRender'
6+
import {Resolver} from 'found-relay'
7+
8+
import Routes from './Routes'
9+
import environment from './Environment'
10+
11+
const FarceRouter = createFarceRouter({
12+
historyProtocol: new BrowserProtocol(),
13+
historyMiddlewares: [queryMiddleware],
14+
routeConfig: Routes,
15+
render: createRender({}),
16+
})
17+
18+
export default class Router extends Component {
19+
render() {
20+
return(
21+
<FarceRouter resolver={new Resolver(environment)}/>
22+
)
23+
}
24+
}

src/Routes.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import makeRouteConfig from 'found/lib/makeRouteConfig'
2+
import Route from 'found/lib/Route'
3+
import React from 'react'
4+
import {graphql} from 'react-relay'
5+
6+
import App from './Components/App'
7+
8+
const query = graphql`
9+
query routes_App_Query {
10+
viewer {
11+
...Layout_viewer
12+
...WidgetList_viewer
13+
}
14+
}`
15+
16+
export default makeRouteConfig(
17+
<Route path="/" Component={App} query={query} />,
18+
)

src/Components/__generated__/AppQuery.graphql.js src/__generated__/routes_App_Query.graphql.js

+7-23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import React from 'react'
22
import ReactDOM from 'react-dom'
33
import { AppContainer } from 'react-hot-loader'
44

5-
import App from './Components/App'
6-
75
import styles from './index.scss'
6+
import Router from './Router'
87

98
const render = Component => {
109
ReactDOM.render(
@@ -15,8 +14,8 @@ const render = Component => {
1514
)
1615
}
1716

18-
render(App)
17+
render(Router)
1918

2019
if (module.hot) {
21-
module.hot.accept('./Components/App', () => { render(App) })
20+
module.hot.accept('./Router', () => { render(Router) })
2221
}

0 commit comments

Comments
 (0)