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-reduxで追加されたHooks APIの良い所と使い方
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
camcam_lemon
August 01, 2019
Programming
1k
5
Share
react-reduxで追加されたHooks APIの良い所と使い方
Nihonbashi.js #5での登壇資料です。
camcam_lemon
August 01, 2019
More Decks by camcam_lemon
See All by camcam_lemon
オレを実装してデザイン実装楽したい
lemon
0
78
要素のサイズを変えずに押しやすくする
lemon
0
91
iOSのキーボード入力ビューをカスタマイズする
lemon
0
310
視え方と文字の大きさ
lemon
1
450
Yarn WorkSpaces × React Nativeの環境構築
lemon
0
320
フロントエンドにおけるアーキテクチャとの向き合い方
lemon
10
5k
UI/UXデザイナーがデザインしてるもの
lemon
2
340
ESLintで始めるTypeScriptの静的解析
lemon
8
2.2k
SEがエンジニアに目覚めデザイナーに転身した冒険譚
lemon
6
1.6k
Other Decks in Programming
See All in Programming
GoogleCloudとterraform完全に理解した
terisuke
1
170
実践CRDT
tamadeveloper
0
610
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
710
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
310
アーキテクチャモダナイゼーションとは何か
nwiizo
19
5.6k
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
450
Structured Concurrency, Scoped Values and Joiners in the JDK 25 26 27
josepaumard
0
110
Import assertionsが消えた日~ECMAScriptの仕様はどう決まり、なぜ覆るのか~
bicstone
2
150
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
230
JOAI2026 1st solution - heron0519 -
heron0519
0
160
Liberating Ruby's Parser from Lexer Hacks
ydah
2
2.3k
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
250
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
820
AI: The stuff that nobody shows you
jnunemaker
PRO
6
610
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Thoughts on Productivity
jonyablonski
76
5.1k
BBQ
matthewcrist
89
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Designing Experiences People Love
moore
143
24k
So, you think you're a good person
axbom
PRO
2
2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
GraphQLとの向き合い方2022年版
quramy
50
15k
Transcript
react-reduxで追加されたHooks API の良い所と使い方 Nihonbashi.js #5
Name 甲斐田 亮一 Twitter @camcam_lemon Company 日本事務器株式会社 Skills TypeScript, React
/ Figma Occupation フロントエンドエンジニア/デザイナー
[email protected]
でついに Hooks APIがstableなりました useStore 3 useDispatch 2 useSelector 1 ※useActionは削除されました
useSelector - mapStateToPropsと同等の役割 - メモライズ化させることが可能 - reselectと一緒に使うこともできる - ReduxのStoreにアクセスして値を取得する
連想配列やネストしたオブジェクトでなければ react-reduxのshallowEqualで比較可能 Hooksのdeps方式ではなく React.memo, shouldComponentUpdateと同じ方式 - メモライズ化は関数の第2引数で行う 第2型引数は第1引数の関数が返却する型 第1型引数はStoreの型 -
型付けは2つの型引数で行う
useDispatch - mapDispatchToPropsと同等の役割 - メモライズ化はuseCallbackで別途させる必要あり - Reduxにアクションを通知するdispatch関数を返す
depsにはdispatch関数も渡そう 不要なレンダリングを避けるためには useCallbackによるメモライズ化が必須 - useCallbackとセットで使うことが多い - useDispatchはdispatchするための 関数を返すだけ
useStore - Providerに渡しているstoreを取得する - あまり使うべきHooksではない¥ - reducerの再作成が必要な場面で使う
react-reduxのHooksで何が嬉しいのか - HoCからの完全脱却 - TypeScriptの型周りの煩わしさからの解放 - custom hooksのデメリットがなくなった - 圧倒的にconnectしやすい
react-reduxのHooksで何が嬉しいのか - HoCからの完全脱却 - TypeScriptの型周りの煩わしさからの解放 - custom hooksのデメリットがなくなった - 圧倒的にconnectしやすい
custom hooksとは - コンポーネントの外に出されたhooksAPI を使っている関数 - custom hooks内の状態や副作用は分離してる 複数回呼び出しても共有されることはない -
関数名は`use`で始めるのが原則
おもな用途 再利用可能にする 3 ロジックの分離 2 一連の手続きをまとめる 1
デメリットって?
None
None
引数と型付け地獄 引数と型付け地獄
アプリケーションに依存したcustom hooks は引数がやばくなる Context APIで回避はできるけども... Class Componentの方が自然に書ける
useSelectorとuseDispatchで書き直してみる
useSelectorとuseDispatchで書き直してみる 直接書けるようになった 直接書けるようになった
- custom hooksとの相性がとても良い - Container Componentの作成がしやすくなった - mapDispatchToProps => useDispatch
- mapStateToProps => useSelector まとめ
ご静聴ありがとうございました!