-
Notifications
You must be signed in to change notification settings - Fork 0
/
forest-page.tsx
47 lines (38 loc) · 1.35 KB
/
forest-page.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const React = require("react");
import { DefaultForestHooks, ForestApp, ForestHooksContext, useNavigate } from '@vdimensions/forest-js-react';
import { ForestGatsbyClient } from "./client";
import "/src/forest/views";
type GatsbyNavigatorProps = {
template: string
}
const GatsbyNavigatorInner : React.FC<GatsbyNavigatorProps> = React.memo((props) => {
console.debug("GatsbyNavigatorInner");
const navigate = useNavigate();
React.useEffect(() => {
console.debug("GatsbyNavigator navigating to ", props.template);
navigate(props.template);
}, [props.template]);
return (<>{props.children}</>);
});
const ForestPage = (props) => {
const {template, data} = props.pageContext;
const GatsbyNavigator : React.FC<any> = React.memo((props) => {
console.debug("GatsbyNavigator");
return (
<ForestHooksContext.Provider value={DefaultForestHooks}>
<GatsbyNavigatorInner template={template}>
{props.children}
</GatsbyNavigatorInner>
</ForestHooksContext.Provider>
);
});
console.debug("ForestPage");
return (
<ForestApp
loadingIndicator={<span>LOADING</span>}
client={new ForestGatsbyClient(data)}
navigator={GatsbyNavigator}
/>
);
};
export default ForestPage;