我有一個服務器端渲染的應用程序,並希望數據可以在第一個渲染訪問。如果用戶導航到下一頁,我想使用graphQL庫Apollo來獲取新內容。Graphql使用redux狀態以及Apollo
當請求一個頁面時,服務器用請求的頁面的數據設置initialState鍵curPage
。例如,用戶請求http://example.com/about
。我從我的數據庫中獲取的頁面數據,將initialState鍵curPage
設置爲來自數據庫的數據。
所以我的初始化狀態可能是這個樣子:
{
"curPage": {
"id": 5,
"title": "About",
"slug": "about",
"path": "/about",
"template": "about",
"published": "2017-07-10 02:02:30",
"image": null,
"seo": {
"title": null,
"description": null,
"image": null,
"fbAdmins": null,
"gtm": null,
"schema": ""
},
"sections": [
{
"type": "masthead",
"mh_title": "",
"video": false,
"image": [
],
"showCta": false,
"cta": [
]
},
{
"type": "text_image",
"alignment": "left",
"text_image": [
{
"type": "text",
"title": "",
"content": "",
"call_to_action": false,
"cta": [
]
}
]
}
]
},
}
因此,如果這curPage數據是可用的,我想使用,否則我想從graphQL獲取。
我的頁面組件目前只從graphQL中提取,並且不檢查數據是否在initialState中可用。
import React, { Component } from 'react'
import { graphql, gql } from 'react-apollo';
import './about.css'
class About extends Component {
render() {
return (
<section className='about-container'>
<h2>About Page</h2>
</section>
)
}
}
const mapQueryToProps = ({data: { findResource }, ownProps}) =>
({ curPage: findResource ? findResource[0] : null })
const MY_QUERY = gql`
query {
findResource(filter: {resource: "pages", slug: "about"}) {
id
title
slug
path
sections
}
}`
export default graphql(MY_QUERY, { props: mapQueryToProps })(About)
有沒有辦法通過阿波羅graphQL,我可以做這樣的事情發生反應,終極版的connect()
沒有,但如果它是不可用,則自graphQL取?
我猜我需要使用connect()
但在我的componentDidMount()
檢查數據是否設置,如果它不檢索?
很酷,請看看。謝謝 – Stretch0