1.什么是GraphQLreact
GraphQL 既是一种用于 API 的查询语言也是一个知足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端可以准确地得到它须要的数据,并且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。工具
官网:http://graphql.cn/flex
2.为何须要它?网站
一图抵万言:spa
3.怎么作?code
1.一图抵万言:component
解释:你须要的东西都在这段代码里:图片
{ site { siteMetadata { title } } }
2.怎么套到组件里?ip
src>components>Header.js里面,开发
import { StaticQuery, graphql } from 'gatsby' import React from "react" const TitleAndDescription = ({ data }) => { //这里的数据是下面查出来的 const title = data.site.siteMetadata.title; const description = data.site.siteMetadata.description; return ( <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}> <h2>{title}</h2> <p>{description}</p> </div> ); } //这里是全部数据,传到了TitleAndDescription组件里,react组件数据传递 const Header = () => { return ( <StaticQuery query={graphql` query{ site { siteMetadata { title, description, } } } `} render={data => <TitleAndDescription data={data} />} /> ) } export default Header
这里是全部数据,传到了TitleAndDescription组件里,react组件数据传递,我这么就为了看着舒服一点。
3.嵌套Header
将Header组件扔到 pages下面的index.js里面:
import React from "react" import Header from '../components/header' const Layout = () => { return ( <div> <Header /> </div> ) } export default Layout;
打开首页,看到网站的描述就大功告成了。