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 Queryは非同期の状態管理ライブラリだ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ytaisei
July 13, 2023
Technology
2.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Queryは非同期の状態管理ライブラリだ
HRBrain Fly High #4 -Frontend-にて使用した資料
ytaisei
July 13, 2023
More Decks by ytaisei
See All by ytaisei
TanStack Routerを新規プロダクトで1年間運用してみた結果
ytaisei
1
390
Reactを段階的に覗いてみる
ytaisei
3
2.1k
Reactのトランジションを覗いてみる
ytaisei
1
2.6k
Deep Dive Into React 〜React Fiber Architectureについて〜
ytaisei
2
520
React19で状態管理はどう変わるか
ytaisei
2
230
TanStackで効率的なルーティングとデータ取得を実現
ytaisei
10
2.6k
TanStack Routerで型安全かつ効率的なルーティングを実現
ytaisei
4
2.5k
BunがCommonJSをサポートする理由
ytaisei
2
490
TanStack Router SPA開発の選択肢になるか(+TanStack Query)
ytaisei
2
1.7k
Other Decks in Technology
See All in Technology
コードレビューを制するチームがソフトウェアデリバリーのフローを制す / Beyond Code Review: Distributing Its Responsibilities Across the SDLC
mtx2s
4
1.1k
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.2k
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
250
Dynamic Workersについて
yusukebe
2
590
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
7.9k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
160
新規事業を牽引する技術選定 〜フルスタックTypeScript開発の実践事例〜
nullnull
3
350
Ruby::Boxでできること、Refinementsでできること
joker1007
3
390
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
3
220
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
3
610
正解のないAIプロダクトをどう導くか?dodaが挑む、ユーザーの『本音』を構造化する評価設計と検証のリアル
techtekt
PRO
0
180
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
190
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
600
It's Worth the Effort
3n
188
29k
Abbi's Birthday
coloredviolet
2
7.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Un-Boring Meetings
codingconduct
0
310
Become a Pro
speakerdeck
PRO
31
6k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
150
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
380
YesSQL, Process and Tooling at Scale
rocio
174
15k
Technical Leadership for Architectural Decision Making
baasie
3
400
Transcript
React Queryは非同期の 状態管理ライブラリだ HRBrain 長期インターン 安井大晟
自己紹介 01. 02. 03. 04. 05. 状態管理の種類 Client State vs
Server State 非同期の状態を 管理する キャッシュを 管理する Table of contents
自己紹介 01.
経歴 2019年 早稲田大学教育学部入学 2021年 42Tokyo入学 プログラミングを始める 2022年 技育展優秀賞 2022年 HRBrain長期インターン開始 2023年 春のJavaScript祭りLT登壇 2023年 社内Qiita Engineer Festa運営中
02. 状態管理の種類
Reactの状態には 何種類ある? Redux Context API Recoil jotai useState React Query
SWR
A. 3種類
株式会社ナレッジワークよしこさんの 記事をお借りします
Client State Global State Server State Reactの状態には3種類ある 各Component内で 管理される状態 ページをまたいで
保持し続ける 必要のある状態 サーバーデータ のキャッシュ
Client State Global State Server State Reactの状態には3種類ある UIの状態 トースト表示 APIレスポンス
Client State Global State Server State Reactの状態には3種類ある UIの状態 トースト表示 APIレスポンス
クライアントの状態 サーバーの状態
本来、サーバーの状態は クライアントの状態と 分けて管理されるべきである
Client State Global State Server State Reactの状態には3種類ある UIの状態 トースト表示 APIレスポンス
クライアントの状態 サーバーの状態
Client State Global State Server Stateが存在しない UIの状態 トースト表示 APIレスポンス
Redux
Client State Global State Server Stateが存在しない UIの状態 トースト表示 APIレスポンス Reduxでは、
Server Stateを Global State として管理している
03. Client State vs Server State
Client StateとServer State の違いは? 以後、Client State = Client State +
Global State
Client State vs Server State Client State Server State 所有者
クライアントが完全に所有している リモートに操作されうる 同期性 同期的に使用することができる 非同期的に使用する必要がある 最新性 常に最新の状態である 状態が古くなる可能性がある
Client State vs Server State Client State Server State 所有者
クライアントが完全に所有している リモートに操作されうる 同期性 同期的に使用することができる 非同期的に使用する必要がある 最新性 常に最新の状態である 状態が古くなる可能性がある
04. 非同期の状態を管 理する
ReduxとReact Queryでの 非同期な状態の実装を比較 loadingで検証
Reduxの場合
React Queryの場合
React Queryの場合
React Queryは非同期の 状態管理ライブラリだ
05. キャッシュを 管理する
Client State vs Server State Client State Server State 所有者
クライアントが完全に所有している リモートに操作されうる 同期性 同期的に使用することができる 非同期的に使用する必要がある 最新性 常に最新の状態である 状態が古くなる可能性がある
状態をなるべく 最新に保ちたい
useQueryを使用した データフェッチの流れ 1. useQueryがコンポーネントで呼ばれ、データフェッチを開始 2. queryKeyを参考にキャッシュを確認する - キャッシュヒットした場合、キャッシュされたデータをコンポーネントに返却 - キャッシュヒットしなかった場合、または、キャッシュヒットしたがキャッシュが
stale状態の場 合は3に進む 3. バックグラウンドで新しいデータを fetchしてアップデートする 4. 新しいデータをキャッシュに保存して再レンダリングする
なるべくキャッシュを 返してfetchを減らしたい
StaleTimeとcacheTime • staleTime ◦ キャッシュをstale(古くなったとみなす) 状態にするまでの期間 ◦ デフォルト:0 • cacheTime
◦ キャッシュをガベージコレクション(メモリ領域の開放)するまでの 時間 ◦ デフォルト:5分
StaleTimeを使用する • staleTime:0 ◦ 常に最新のデータを取得する • staleTime:Infinity ◦ キャッシュが常にfreshなのでネットワークのリクエストが走らず、 キャッシュからデータを取得する
◦ 自分しか変更できないデータに有効
StaleTimeを使用する • staleTime:0 ◦ 基本はこの設定で良い • staleTime:Infinity ◦ データが更新されるタイミングがわかっていれば Infinityにして、更新時に明示的にinvalidateする
最新性を優先する
Client State vs Server State Client State Server State 所有者
クライアントが完全に所有している リモートに操作されうる 同期性 同期的に使用することができる 非同期的に使用する必要がある 最新性 常に最新の状態である 状態が古くなる可能性がある
Thanks!!!
Thanks!!! • Twitter ◦ https://twitter.com/ytaisei_ • Qiita ◦ https://qiita.com/taisei-13046 •
Zenn ◦ https://zenn.dev/taisei_13046