rsnext/examples/with-typescript-graphql
WeichienHung a2bea9b492
Add mutation example to with-typescript-graphql (#16742)
Fixes  https://github.com/vercel/next.js/issues/16550

Add a graphql mutation operation in this example.
The changes are:
1. Define mutation in schema `type-defs.graphqls`
2. Add mutation to `viewer.graphql ` that compiled to typescript code.
3. Add mutation resolver in `resolvers.ts`
4. [UI] add a input box and button to submit mutation request to change name. 

screenshot of change
![mutation_example](https://user-images.githubusercontent.com/1462027/91797123-5ffc4e00-ec54-11ea-910b-3ddb399b42f0.gif)
2020-11-10 21:10:54 +00:00
..
lib Add mutation example to with-typescript-graphql (#16742) 2020-11-10 21:10:54 +00:00
pages Add mutation example to with-typescript-graphql (#16742) 2020-11-10 21:10:54 +00:00
test Add mutation example to with-typescript-graphql (#16742) 2020-11-10 21:10:54 +00:00
.babelrc Update with-typescript-graphql (#16101) 2020-08-29 22:15:50 -04:00
.gitignore Update with-typescript-graphql (#16101) 2020-08-29 22:15:50 -04:00
.graphql-let.yml Update with-typescript-graphql (#16101) 2020-08-29 22:15:50 -04:00
jest.config.js fix: Order moduleFileExtensions left-to-right (#18328) 2020-10-27 20:20:03 +00:00
next-env.d.ts Update with-typescript-graphql (#16101) 2020-08-29 22:15:50 -04:00
next.config.js Update with-typescript-graphql (#16101) 2020-08-29 22:15:50 -04:00
package.json Ensure all examples are MIT licensed (#16691) 2020-08-29 22:32:35 -04:00
README.md Simplify example usage instructions (#16678) 2020-08-29 22:22:02 -04:00
tsconfig.json Proposing a new example "with-typescript-graphql" (#9803) 2020-01-08 13:39:00 -05:00

TypeScript and GraphQL Example

One of the strengths of GraphQL is enforcing data types on runtime. Further, TypeScript and GraphQL Code Generator (graphql-codegen) make it safer by typing data statically, so you can write truly type-protected code with rich IDE assists.

This template extends Apollo Server and Client Example by rewriting in TypeScript and integrating graphql-let, which runs TypeScript React Apollo in graphql-codegen under the hood. It enhances the typed GraphQL use as below:

import { useNewsQuery } from './news.graphql'

const News = () => {
	// Typed already
	const { data: { news } } = useNewsQuery()

	return <div>{news.map(...)}</div>
}

By default **/*.graphqls is recognized as GraphQL schema and **/*.graphql as GraphQL documents. If you prefer the other extensions, make sure the settings of the webpack loader in next.config.js and .graphql-let.yml are consistent.

Deploy your own

Deploy the example using Vercel:

Deploy with Vercel

How to use

Execute create-next-app with npm or Yarn to bootstrap the example:

npx create-next-app --example with-typescript-graphql with-typescript-graphql-app
# or
yarn create next-app --example with-typescript-graphql with-typescript-graphql-app

Deploy it to the cloud with Vercel (Documentation).