我使用阿波罗客户端作为我的反应前端,以便能够使用由GraphQL托管的拉勒维尔灯塔。
正常使用情况可以工作,但我现在发现自己面临某些情况,在这些情况下,我希望在初始页面请求中预取一个GraphQL结果,而不是让浏览器加载页面,然后发送一个单独的ajax查询。
我看到阿波罗客户既支持“存储再水化”,也支持“服务器端呈现”,但我还没有在灯塔中找到任何关于如何做到这一点的文档。
我认为我的叶片视图应该包含这样的内容:
<script>
window.__APOLLO_STATE__ = '{!!$postsGqlResultJson ?? "null" !!}'; // https://www.apollographql.com/docs/react/performance/server-side-rendering/
</script>
那么问题是:如何生成$postsGqlResultJson
**?**
更新:
假设我在前排:
const POSTS = gql`
query Posts($first: Int, $page: Int) {
posts(first: $first, page: $page, orderBy: { field: CREATED_AT, order: DESC }) {
paginatorInfo {
currentPage
hasMorePages
total
}
data {
id
...
}
}
`;
const options = {
variables: {
first: 100,
page: 1,
}
};
const { loading, error, data } = useQuery(query, options);
我认为灯塔可能提供某种类似于useQuery
的PHP函数,在这里我可以以某种方式提供相同的参数( POSTS、GQL和options对象),并且它将返回结果数据的JSON字符串,嵌套在gql中。
我是不是误会了?我真的很感激你的帮助。:-)
发布于 2020-09-20 17:36:27
您描述的阿波罗客户端功能看起来像是前端的关注点,并假设您正在从Node.js服务器为您的前端服务。
在灯塔这里没有什么特别的事情要做--从它的角度来看,查询是作为服务器端呈现的一部分发送的,还是从客户端发送并不重要。
https://stackoverflow.com/questions/63980847
复制相似问题