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
React19で状態管理はどう変わるか
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ytaisei
August 03, 2024
Technology
250
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React19で状態管理はどう変わるか
若手エンジニアLT & 交流会にて使用したスライドです
https://devguil.connpass.com/event/321787/
ytaisei
August 03, 2024
More Decks by ytaisei
See All by ytaisei
TanStack Routerを新規プロダクトで1年間運用してみた結果
ytaisei
1
570
Reactを段階的に覗いてみる
ytaisei
3
2.2k
Reactのトランジションを覗いてみる
ytaisei
1
2.7k
Deep Dive Into React 〜React Fiber Architectureについて〜
ytaisei
2
600
TanStackで効率的なルーティングとデータ取得を実現
ytaisei
10
2.7k
TanStack Routerで型安全かつ効率的なルーティングを実現
ytaisei
4
2.6k
BunがCommonJSをサポートする理由
ytaisei
2
520
TanStack Router SPA開発の選択肢になるか(+TanStack Query)
ytaisei
2
1.9k
【2023】SWR vs TanStack Query
ytaisei
1
2.3k
Other Decks in Technology
See All in Technology
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
160
Incremental HTTP
kazuho
5
2.1k
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
120
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
160
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
170
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
1k
Codex概要
ymiya55
0
490
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
1
340
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
120
会社説明資料
persolserverworks
0
9.6k
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.2k
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
140
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
RailsConf 2023
tenderlove
30
1.6k
Embracing the Ebb and Flow
colly
88
5.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
350
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
Transcript
React19で状態管理はどう変わるか 株式会社AI Shift 安井大晟(ytaisei_)
自己紹介 • 株式会社AI Shift ◦ Webフロントエンド ◦ LLMを活用した新規事業 • 社会人1年目
• 2社でBtoBアプリケーション開発 • Zennで記事をよく書いてる、など
アジェンダ 1. use API 2. useActionState Hook 3. useOptimistic Hook
4. まとめ
アジェンダ 1. use API 2. useActionState Hook 3. useOptimistic Hook
4. まとめ 重要:今回はクライアントでの実行にFocusしています。
use API > use はプロミス (Promise) やコンテクストなどのリソースから 値を読み取るための React API
です。 > プロミスを引数にして呼び出した場合、 use API は Suspense や エラーバウンダリ (error boundary) と協調して動作します。 参考:https://ja.react.dev/reference/react/use
use API > use はプロミス (Promise) やコンテクストなどのリソースから 値を読み取るための React API
です。 > プロミスを引数にして呼び出した場合、 use API は Suspense や エラーバウンダリ (error boundary) と協調して動作します。 参考:https://ja.react.dev/reference/react/use おっ?
ReactのAPIでSuspense for Data Fetchingが可能??? (今までは) TanStack QueryやSWRなどのライブラリを 使用しないと実現できなかった (期待) Reactの標準APIで
Suspense for Data Fetchingを実装したい...
ReactのAPIでSuspense for Data Fetchingが可能??? (今までは) TanStack QueryやSWRなどのライブラリを 使用しないと実現できなかった (期待) Reactの標準APIで
Suspense for Data Fetchingを実装したい... 非推奨 😢
Promiseのキャッシュが必要 何も工夫をしないとレンダリングのたびに Promiseが再生成されてしまう 不必要に非同期処理が走る 自前でキャッシュを用意する...?
非同期の状態管理ライブラリは Promiseのキャッシュと その制御という観点で未だ重要な役割を持つ
コンテクストから値を読み取る • use APIにコンテキストを渡すと useContextと同じ挙動になる • useContextとの違い ◦ 条件分岐の中で使用できる
コンテクストから値を読み取る • use APIにコンテキストを渡すと useContextと同じ挙動になる • useContextとの違い ◦ 条件分岐の中で使用できる use
はより柔軟であるため、 useContext よりも優先的に使用する 参考:https://ja.react.dev/reference/react/use#reading-context-with-use
useActionState Hook 状態の更新に伴う要素 • 更新する状態 • 更新中の状態 • 更新結果の状態 Stateで実装するのはしんどい...
→ Formライブラリを採用する動機になる (React19以前のコード)
useActionState Hook 状態の更新に伴う要素 • 更新する状態 ◦ formの拡張(FormData) • 更新中の状態 ◦
isPending • 更新結果の状態 ◦ Success or Error State これらがReactのHooksで完結する
useActionStateとformの拡張によって、 状態の更新を効率的に管理できるようになった。 • バンドルサイズの軽減 • 学習コストの低下 • ライブラリのメンテナンス これらの観点からも Reactで状態の更新が完結するのはメリットがある。
useOptimistic Hook 個人的に最も期待している Hookです
useOptimistic Hook 楽観的更新とは? 非同期リクエストの進行中、最終的に得るはずの状 態を先に楽観的に表示しておくというもの
これまでの楽観的更新 React19以前(TanStack Queryの例) TanStack Queryでの処理 1. 実行中のクエリをキャンセル 2. 更新前のスナップショットを記憶 3.
キャッシュを直接更新&描画 4. 非同期で更新処理を実行 5. 成功した場合はinvalidateQueriesで データを再取得 6. エラーの場合は表示中の状態を Fallback
これまでの楽観的更新 やりたいことの割に処理が複雑 ... • ライブラリ固有の知識が必要 ◦ キャッシュの扱い ◦ Callback関数の実行順序 etc.
• ライブラリによって若干実装が変わる useOptimisticが解決
useOptimisticによる楽観的更新 useOptimisticでの処理 1. useOptimisticに初期値を渡す 2. useOptimisticから返される dispatch関数を更新処理の前に実行 a. stateが更新&描画 3.
非同期処理が成功・失敗に合わせて処 理を追加
ライブラリ固有の学習無しに楽観的更新を実装可能になった
まとめ • useはコンテキストからのリソース取得が柔軟 • useActionStateとuseOptimisticによって 今までライブラリに頼っていた実装が React固有のAPI・Hooksによって実現できる ◦ まずはReactの機能で実装を試みて、 足りない要素を補うようにより薄くライブラリを使っていく意識