前提
- Reactについて知っている。
- GatsbyJSの基本 1相当を知っている。
GatsbyJSの基本 1の続きです。
GatsbyJSでデータを取得する方法について
GatsbyJSのデータ
GatsbyJSにおけるデータとは、「Reactコンポーネントの外側にあるすべてのもの」です。具体的には、Markdown、CSV、データベース、API等のことを指します。
GatsbyJSでデータを取得する場合は、基本的にGraphQLを使用します。
データを変換して利用する場合は、source plugin(例:gatsby-source-filesystem)やtransformer plugin(例:gatsby-transformer-remark)を使用します。
GatsbyJSでGraphQLを用いる方法は2つあります。
一つはpage queryで、もう一つはuseStaticQueryです。
以降のクエリの利用方法(page query、useStaticQuery)の例は、gatsby-config.jsが下記の設定になっていることを前提にしています。
|
|
GraphQLでクエリできる対象については、 http://localhost:8000/__graphql にアクセスすることでわかります。 source pluginやtransformer pluginを追加した際はサーバを再起動して確認すると追加されたクエリがわかります。
page query
下記のようにpages以下のファイル内でexport const query
といった形でgraphql関数にクエリを記載したものをexportすると、クエリが実行された結果がコンポーネントにdataオブジェクトとして注入されるようになります。gatsbyjsではこのクエリの使い方をpage queryと呼びます。
pages/about.js
|
|
useStaticQuery
useStaticQueryは、ページ以外のコンポーネントで使用するものです。 下記のように使用します。
components/Layout.js
|
|
source pluginについて
source pluginはなんらかのデータソースからデータを取得できるようにするものです。source pluginには、WordPress REST APIを使えるようにするgatsby-source-wordpress
やローカルファイルシステムからのデータを提供するgatsby-source-filesystem
などがあります。
gatsby-source-filesystem
はローカルファイルシステムからFileノードを作成してくれます。クエリとしてfileとallFileが使えるようになります。
以下に、簡単な例を示します。
|
|
gatsby-config.js
|
|
gatsby-source-filesystem
をインストールしてgatsby-config.js
に上記のような設定をすることにより、src以下のものがクエリ対象に入ります。
一度サーバを再起動して http://localhost:8000/__graphql にアクセスしてみてください。allFileとfileのクエリが追加されているはずです。
allFileとfileのクエリが追加されているので、graphqlのクエリで下記のようなものが書けるようになります。
|
|
|
|
上で説明したpage queryやuseStaticQueryを使用することで、ファイル情報を表示することができます。
transformer pluginについて
transformer pluginは、source pluginからコンテンツを取得して変換します。transformer pluginには、markdownをHTMLに変換するgatsby-transformer-remark
等があります。
gatsby-transformer-remark
は、MarkdownRemarkノードを作成します。クエリとしてmarkdownRemarkとallMarkdownRemarkが使えるようになります。
以下に、簡単な例を示します。
|
|
|
|
gatsby-transformer-remark
をインストールしてgatsby-config.js
に上記のような設定をすることにより、markdownRemarkとallMarkdownRemarkのクエリが追加されます。
一度サーバを再起動して http://localhost:8000/__graphql にアクセスして見てください。markdownRemarkとallMarkdownRemarkのクエリが追加されているはずです。
markdownRemarkとallMarkdownRemarkのクエリが追加されているので、graphqlのクエリで下記のようなものが書けるようになります。
|
|
|
|
上で説明したpage queryやuseStaticQueryを使用することで、markdownをhtmlに変換したもの等、markdownの各種情報を表示することができます。