Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React & GraphQL – From zero to production
Search
Glenn Reyes
October 10, 2019
Programming
65
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React & GraphQL – From zero to production
Glenn Reyes
October 10, 2019
More Decks by Glenn Reyes
See All by Glenn Reyes
Dutch AI Conference - Building Interactive Chat Interfaces with MCP-UI
glennreyes
0
29
Advanced TypeScript for React
glennreyes
0
120
TypeScript Patterns for Better React Components
glennreyes
1
530
GraphQL for React Developers
glennreyes
0
220
When things go wrong, get errors right!
glennreyes
0
140
GraphQL for JS developers
glennreyes
1
170
Building Dapps with React
glennreyes
0
130
Third-Party or Custom Code? The Art of Software Decisions
glennreyes
0
100
UI/UX challenges of Web3 and Dapps
glennreyes
0
190
Other Decks in Programming
See All in Programming
Swiftのレキシカルスコープ管理
kntkymt
0
210
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.5k
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
590
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
160
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
620
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.5k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
120
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
550
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
190
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.1k
RailsConf 2023
tenderlove
30
1.5k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Docker and Python
trallard
47
3.9k
Unsuck your backbone
ammeep
672
58k
Speed Design
sergeychernyshev
33
1.8k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
600
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
GraphQLとの向き合い方2022年版
quramy
50
15k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
530
The Cult of Friendly URLs
andyhume
79
6.9k
How to build a perfect <img>
jonoalderson
1
5.6k
Transcript
@glnnrys · glennreyes.com React & GraphQL From zero to production
@glnnrys · glennreyes.com > whoami
@glnnrys · glennreyes.com Glenn Reyes Independent Software Engineer
@glnnrys · glennreyes.com Goals for today
@glnnrys · glennreyes.com Learn
@glnnrys · glennreyes.com Fun
@glnnrys · glennreyes.com Ship
@glnnrys · glennreyes.com What is GraphQL?
@glnnrys · glennreyes.com Query Language for APIs
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com A friendly reminder GraphQL is bleeding edge
technology
@glnnrys · glennreyes.com www.graphql.org
@glnnrys · glennreyes.com Describe your data
Describe your data
None
User
Tweet Tweet
User Tweet
Describe your data User Tweet
Describe your data User Tweet name email username bio age
tweets message from
@glnnrys · glennreyes.com Describe your Schema in a Type System
@glnnrys · glennreyes.com type Tweet { id: ID! message: String!
from: User } type User { name: String! email: String! bio: String age: Int tweets: [Tweet!]! username: String! }
@glnnrys · glennreyes.com Int Float String Boolean ID
@glnnrys · glennreyes.com type Query { getUser(email: String!): User! getTweets(username:
String!): [Tweet!]! } type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com # GET something type Query { getUser(email:
String!): User! getTweets(username: String!): [Tweet!]! } # DO something type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com # GET something type Query { #
Get a user by the email adress getUser(email: String!): User! # Get tweets getTweets(username: String!): [Tweet!]! } # DO something type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com type Tweet { id: ID! message: String!
from: User } type User { name: String! email: String! bio: String age: Int tweets: [Tweet!]! username: String! } type Query { getUser(email: String!): User! getTweets(username: String!): [Tweet!]! } type Mutation { createTweet: Tweet deleteTweet(id: ID!): Tweet updateTweet(id: ID!): Tweet }
@glnnrys · glennreyes.com www.graphql.org
@glnnrys · glennreyes.com Ask for what you want
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
{ name twitter job expertise oss(type: "most-popular") elseIDo } {
"name": "Glenn Reyes", "twitter": "@glnnrys", "job": "Independent Software Engineer", "expertise": ["React", "GraphQL"], "oss": ["graphpack", "react-countup"], "elseIDo": [ "Co-organize React Vienna", "Speak at conferences", "Give workshops" ] }
{ name twitter job expertise oss(type: "most-popular") elseIDo } {
"name": "Glenn Reyes", "twitter": "@glnnrys", "job": "Independent Software Engineer", "expertise": ["React", "GraphQL"], "oss": ["graphpack", "react-countup"], "elseIDo": [ "Co-organize React Vienna", "Speak at conferences", "Give workshops" ] } GraphQL Query JSON
{ name twitter job expertise oss(type: "most-popular") elseIDo } {
"name": "Glenn Reyes", "twitter": "@glnnrys", "job": "Independent Software Engineer", "expertise": ["React", "GraphQL"], "oss": ["graphpack", "react-countup"], "elseIDo": [ "Co-organize React Vienna", "Speak at conferences", "Give workshops" ] } GraphQL Query JSON
{ name twitter job } { "name": "Glenn Reyes", "twitter":
"@glnnrys", "job": "Independent Software Engineer" } GraphQL Query JSON
@glnnrys · glennreyes.com What is GraphQL?
@glnnrys · glennreyes.com Query Language for APIs
@glnnrys · glennreyes.com Ask for what you want And get
predictable results
@glnnrys · glennreyes.com It's Language Agnostic
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com Why GraphQL?
@glnnrys · glennreyes.com GraphQL Architecture
@glnnrys · glennreyes.com Servers Clients
@glnnrys · glennreyes.com Makes managing data difficult in the frontend
Servers Clients
@glnnrys · glennreyes.com Servers Clients GraphQL
@glnnrys · glennreyes.com Servers Clients GraphQL GraphQL handles data management
for us
@glnnrys · glennreyes.com Servers Clients GraphQL GraphQL handles data management
for us delivers us data exactly as needed
@glnnrys · glennreyes.com Servers Clients GraphQL GraphQL handles data management
for us delivers us data exactly as needed let's us focus on the frontend
@glnnrys · glennreyes.com What else?
@glnnrys · glennreyes.com Tooling
@glnnrys · glennreyes.com Query IDEs
@glnnrys · glennreyes.com github.com/graphql/graphiql
@glnnrys · glennreyes.com github.com/prisma/graphql-playground
@glnnrys · glennreyes.com Automatic Documentation
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com
@glnnrys · glennreyes.com const MyProfile = () => { const
{ data, loading } = useQuery(gql` { name email bio } `); if (loading) { return 'Loading ...'; } return <ProfilePage data={data} />; };
@glnnrys · glennreyes.com Questions?
@glnnrys · glennreyes.com Let's get started!
@glnnrys · glennreyes.com github.com/glennreyes/react-graphql-workshop/tree/webcamp-zagreb-2019