バックエンドからデータを取得するためのGraphQLコールは、organismsコンポーネントに限定され、Apollo Clientを利用しています。
最初のステップは、使用するクエリまたはミューテーションを作成することです。(クエリーまたはミューテーションがすでに生成され、アプリの他の場所で使用されている場合、このステップはスキップ可能です。src/gql/graphql-client-api.tsx
にあるGraphQL生成コードを参照してください)。
コンポーネントのディレクトリに、index.tsx
ファイルと一緒にqueries.ts
ファイルを作成します。ここでは、新しいクエリや ミューテーションをすべて宣言し、エクスポートします。
利用可能なクエリや ミューテーションについて、バックエンドのコードを参照してください。
では、GraphQLファイルを再生成する必要があります:
yarn gql
より詳細な情報についてはApollo Clientのドキュメントを参照してください。 しかし、queries.tsファイルで見られる一般的な構文は次のとおりです:
export const CHANGE_SOMETHING = gql`
mutation ChangeSomething(
$value: Any
$id: ID!
) {
updateSomething(
input: {
id: $id
value: $value
}
) {
something {
...
}
}
}
`;
別のhooks.tsファイルでは、クエリ/ミューテーションをインポートし、それを呼び出すことになります。よくあるパターンとしては、クエリ/ミューテーションを使ったコールバック関数が、他のorganismコンポーネントへのプロップとして渡されたり、moleculeコンポーネントで使用されたりすることがあります
カスタムフックファイルからクエリ/文字列を使用すると、次のようになります:
import { useChangeSomethingMutation } from "@reearth/gql;
...
// from within hooks function
const [changeSomethingMutation] = useChangeSomethingMutation();
// then, use changeSomethingMutation as a normal function where needed
注意:クエリ/ミューテーションをmolecule / atomコンポーネントに直接渡すことはできません。