add inline rendering prop to app component

This commit is contained in:
Jake McDermott
2019-01-02 01:40:44 -05:00
parent f2760ed91c
commit a023df2c17
2 changed files with 60 additions and 63 deletions

View File

@@ -73,9 +73,17 @@ class App extends Component {
render () { render () {
const { config, isNavOpen } = this.state; const { config, isNavOpen } = this.state;
const { navLabel = '', routeGroups = [] } = this.props; const {
render,
routeGroups = [],
navLabel = '',
} = this.props;
const header = ( return (
<ConfigContext.Provider value={config}>
<Page
usecondensed="True"
header={(
<PageHeader <PageHeader
showNavToggle showNavToggle
onNavToggle={() => this.onNavToggle()} onNavToggle={() => this.onNavToggle()}
@@ -92,16 +100,15 @@ class App extends Component {
</ToolbarItem> </ToolbarItem>
<ToolbarItem> <ToolbarItem>
<LogoutButton <LogoutButton
onDevLogout={() => this.onDevLogout()} onDevLogout={this.onLogout}
/> />
</ToolbarItem> </ToolbarItem>
</ToolbarGroup> </ToolbarGroup>
</Toolbar> </Toolbar>
)} )}
/> />
); )}
sidebar={(
const sidebar = (
<PageSidebar <PageSidebar
isNavOpen={isNavOpen} isNavOpen={isNavOpen}
nav={( nav={(
@@ -114,34 +121,9 @@ class App extends Component {
</Nav> </Nav>
)} )}
/> />
);
return (
<ConfigContext.Provider value={config}>
<Page
usecondensed="True"
header={header}
sidebar={sidebar}
>
{
//
// Extract a flattened array of all route params from the provided route config
// and use it to render route components.
//
// [{ routes }, { routes }] -> [route, route, route] -> (<Route/><Route/><Route/>)
//
routeGroups
.reduce((allRoutes, { routes }) => allRoutes.concat(routes), [])
.map(({ component: Component, path }) => (
<Route
key={path}
path={path}
render={params => (
<Component {...params } />
)} )}
/> >
)) { render ? render({ routeGroups }) : '' }
}
</Page> </Page>
</ConfigContext.Provider> </ConfigContext.Provider>
); );

View File

@@ -235,6 +235,21 @@ export async function main () {
], ],
}, },
]} ]}
render={({ routeGroups }) => (
routeGroups
.reduce((allRoutes, { routes }) => allRoutes.concat(routes), [])
.map(({ component: PageComponent, path }) => (
<Route
key={path}
path={path}
render={({ match }) => (
<PageComponent
match={match}
/>
)}
/>
))
)}
/> />
)} )}
/> />