HomeToolsAbout a20k

Fragments

What is it

Piece of logic that can be shared between multiple queries and mutations.

Every fragment is its own interface

fragment NameParts on Person { firstName lastName }

NameParts fragment can be reused with any Person object.

  • Person type must have firstName and lastName fields for this fragment to be valid

Every fragment includes a subset of the fields that belong to its associated type.

query GetPerson { people(id: "7") { ...NameParts avatar(size: LARGE) } }

... syntax is used to include a fragment in a query much like spread syntax in JS

Above query is equivalent to:

query GetPerson { people(id: "7") { firstName lastName avatar(size: LARGE) } }

Fragments with Arguments

query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } # argument { "episode": "JEDI" }

Return

// returns all JEDI { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
© VincentVanKoh