-
Notifications
You must be signed in to change notification settings - Fork 10.3k
/
gatsby-browser-entry.js
83 lines (77 loc) · 2.25 KB
/
gatsby-browser-entry.js
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import React from "react"
import PropTypes from "prop-types"
import Link, {
withPrefix,
navigate,
push,
replace,
navigateTo,
parsePath,
} from "gatsby-link"
import PageRenderer from "./public-page-renderer"
const StaticQueryContext = React.createContext({})
const StaticQuery = props => (
<StaticQueryContext.Consumer>
{staticQueryData => {
if (
props.data ||
(staticQueryData[props.query] && staticQueryData[props.query].data)
) {
return (props.render || props.children)(
props.data ? props.data.data : staticQueryData[props.query].data
)
} else {
return <div>Loading (StaticQuery)</div>
}
}}
</StaticQueryContext.Consumer>
)
const useStaticQuery = query => {
if (
typeof React.useContext !== `function` &&
process.env.NODE_ENV === `development`
) {
throw new Error(
`You're likely using a version of React that doesn't support Hooks\n` +
`Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`
)
}
const context = React.useContext(StaticQueryContext)
if (context[query] && context[query].data) {
return context[query].data
} else {
throw new Error(
`The result of this StaticQuery could not be fetched.\n\n` +
`This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +
`please open an issue in https://github.com/gatsbyjs/gatsby/issues`
)
}
}
StaticQuery.propTypes = {
data: PropTypes.object,
query: PropTypes.string.isRequired,
render: PropTypes.func,
children: PropTypes.func,
}
function graphql() {
throw new Error(
`It appears like Gatsby is misconfigured. Gatsby related \`graphql\` calls ` +
`are supposed to only be evaluated at compile time, and then compiled away,. ` +
`Unfortunately, something went wrong and the query was left in the compiled code.\n\n.` +
`Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`
)
}
export {
Link,
withPrefix,
graphql,
parsePath,
navigate,
push, // TODO replace for v3
replace, // TODO remove replace for v3
navigateTo, // TODO: remove navigateTo for v3
StaticQueryContext,
StaticQuery,
PageRenderer,
useStaticQuery,
}