Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
What the Hook ?
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Adnan A M
July 09, 2020
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What the Hook ?
React Hooks presentation
Adnan A M
July 09, 2020
More Decks by Adnan A M
See All by Adnan A M
Abridge Coding Guidelines
adnan321
0
91
A developer's guide to wealth
adnan321
0
300
Scoping Your Storage
adnan321
2
200
What The Context ?
adnan321
2
240
Putting Work Manager To Work
adnan321
0
130
OOP To FP
adnan321
1
230
Putting Work Manager To Work
adnan321
1
220
A slice of Android Slices - droidcon London 2018
adnan321
0
140
Having fun with Kotlin fun()
adnan321
0
130
Other Decks in Programming
See All in Programming
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
430
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
420
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
ChromeでローカルLLM
ryu1013
0
140
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
AWSに止められる覚悟してますか?
morizo_1984
2
540
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
1.3k
気持ちぃ〜角丸 Squircle
ryu1013
0
310
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
310
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.9k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
Design in an AI World
tapps
1
350
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Documentation Writing (for coders)
carmenintech
77
5.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
Transcript
W at he oo ? A 2 1
B ck ro nd A 2 2
C as C mp ne ts 4 c c 4
s (p ) 4 b m (O s a f n ) A 2 3
W at's ro g ? 4 L c l l
4 D t m e l l m 4 I m c o 4 S o l (H /r p a.k.a W l !) A 2 4
E te H ok ! A 2 5
W at s H ok ? A 2 6
P ai o d un ti n A 2 7
H w oe t at el ? 4 N e
o a c c & s (p ) 4 N 't ' A 2 8
W at bo t ta e & l fe yc
e ? import { useState } from 'react'; import { useEffect } from 'react'; import { useYourImagination } from 'yourImagination'; A 2 9
u eS at F h s p import { useState
} from 'react'; const [isLoading, setLoading] = useState(false); const [duration, setDuration] = useState(0); <p>You ran for {duration} minutes</p> <button onClick={() => setDuration(duration + 1)}>Add 1 Min</button> A 2 1
u eS at S c o import { useState }
from 'react'; const [encounter, setEncounter] = useState({ id: uuidv4(), period: { start: moment().valueOf() }, recordings: [], }); A 2 1
u eS at G import { useState } from 'react';
const [duration, setDuration] = useState(0); <button onClick={() => setDuration(duration + 1)}>Add 1 Min</button> R s s i M ! A 2 1
u eE e t import { useEffect } from 'react';
useEffect(() => { start(); }); A 2 1
u eE e t 4 R a e r i
n h s 4 H a s & p i h c n 4 E r c a e i e h e e t e A 2 1
u eE e t - c ea up useEffect(() =>
{ EventListener.subscribe(); return function cleanup() { EventListener.unsubscribe(); } }); A 2 1
u eE e t - O ti is d I
P a import { useEffect } from 'react'; useEffect(() => { start(); }, [props.someElement]); A 2 1
R le f r oo s 4 O l o
R F n 4 D 't l h i l , c o n f n A 2 1
D n t oo ! import { useEffect } from
'react'; // ! We're breaking the rule by using a Hook in conditions if (props.micAuthorized) { useEffect(function startOp() { start(); },[props.micAuthorized]); } A 2 1
R le f r oo s import { useEffect }
from 'react'; useEffect(() => { if (props.micAuthorized) { start(); } }, [props.micAuthorized]); A 2 1
C st m oo s import { BackHandler } from
'react-native'; componentDidMount() { this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleAndroidBackPress); } componentWillUnmount() { this.backHandler.remove(); } A 2 2
C st m oo s import { useEffect } from
'react'; import { BackHandler } from 'react-native'; function useBackButton(handler) { useEffect(() => { BackHandler.addEventListener('hardwareBackPress', handler); return () => { BackHandler.removeEventListener('hardwareBackPress',handler); }; }, [handler]); } useBackButton(handleAndroidBackPress); A 2 2
P rt ng ho gh s... ! 4 T a
t s n n r a l l ☠ 4 T e e s n a u a e r " 4 S s c n r o e e y f n c n A 2 2
T an y u ! A 2 2