如何将 Gatsby 混合站点连接到 Apollo/Graphcool(或 Redux)?
How to connect a Gatsby Hybrid Site to Apollo/Graphcool (or Redux)?
我正在尝试创建一个以 Gatsby 为基础混合静态内容和动态内容的网站。这个混合站点将包含 public 可用的静态营销页面以及存在于身份验证墙后面的几个动态页面。根据 this tweet with @Gatsby,这是可行的。
我卡在第 1 步,添加 apollo 提供商,将网站连接到 Graphcool。
通常,我会像这样在根目录下执行此操作,其中 App 是我网站的根目录...
const networkInterface = createNetworkInterface({
uri: GRAPHCOOL_SIMPLE_ENDPOINT
});
const client = new ApolloClient({
networkInterface
});
export default ReactDOM.render(
<ApolloProvider client={client}>
<App />
</ApolloProvider>,
document.getElementById('root')
);
但是站点的根在 Gatsby 站点中的什么位置?
您想做类似于 Redux 示例站点的事情
https://github.com/gatsbyjs/gatsby/blob/master/examples/using-redux/gatsby-browser.js
您需要注意的一件事是在使用来自 Graph.cool 的数据之前始终检查您是否在客户端中。如果您在静态呈现的组件中工作,则不能指望 graph.cool 数据可用,因为该组件将在服务器和客户端上呈现。
您可以通过 componentDidMount
生命周期方法设置客户端组件。例如,
class Index extends React.Component<IndexPageProps> {
public componentDidMount(): void {
ReactDOM.render(<App />, document.getElementById('root'));
}
public render(): JSX.Element {
return (
<div>
<div id="root" />
</div>
);
}
}
我正在尝试创建一个以 Gatsby 为基础混合静态内容和动态内容的网站。这个混合站点将包含 public 可用的静态营销页面以及存在于身份验证墙后面的几个动态页面。根据 this tweet with @Gatsby,这是可行的。
我卡在第 1 步,添加 apollo 提供商,将网站连接到 Graphcool。
通常,我会像这样在根目录下执行此操作,其中 App 是我网站的根目录...
const networkInterface = createNetworkInterface({
uri: GRAPHCOOL_SIMPLE_ENDPOINT
});
const client = new ApolloClient({
networkInterface
});
export default ReactDOM.render(
<ApolloProvider client={client}>
<App />
</ApolloProvider>,
document.getElementById('root')
);
但是站点的根在 Gatsby 站点中的什么位置?
您想做类似于 Redux 示例站点的事情
https://github.com/gatsbyjs/gatsby/blob/master/examples/using-redux/gatsby-browser.js
您需要注意的一件事是在使用来自 Graph.cool 的数据之前始终检查您是否在客户端中。如果您在静态呈现的组件中工作,则不能指望 graph.cool 数据可用,因为该组件将在服务器和客户端上呈现。
您可以通过 componentDidMount
生命周期方法设置客户端组件。例如,
class Index extends React.Component<IndexPageProps> {
public componentDidMount(): void {
ReactDOM.render(<App />, document.getElementById('root'));
}
public render(): JSX.Element {
return (
<div>
<div id="root" />
</div>
);
}
}