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
axiosで作る:ファイルアップロード体験を改善する「Progress Toast」
Search
Tasuku Watanabe
November 14, 2025
Programming
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
axiosで作る:ファイルアップロード体験を改善する「Progress Toast」
Tasuku Watanabe
November 14, 2025
More Decks by Tasuku Watanabe
See All by Tasuku Watanabe
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
530
useImperativeHandleで理解する クロージャと評価タイミング
tasukuwatanabe
1
97
Other Decks in Programming
See All in Programming
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
260
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
810
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
220
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
280
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
スマートグラスで並列バイブコーディング
hyshu
0
270
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
330
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.7k
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
150
Featured
See All Featured
Everyday Curiosity
cassininazir
0
250
The Cult of Friendly URLs
andyhume
79
6.9k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
320
For a Future-Friendly Web
brad_frost
183
10k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
55k
Are puppies a ranking factor?
jonoalderson
1
3.7k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
340
Embracing the Ebb and Flow
colly
88
5.1k
Building AI with AI
inesmontani
PRO
1
1.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Transcript
ファイルアップロード体験を 改善する Progress Toast 2025/11/14 React Tokyo #11 株式会社HRBrain 渡邉
佑 axiosで作る
2 AGENDA • 自己紹介 • 何を作ったのか • 技術的アプローチ • 実装①:配列管理とグローバル配信
• 実装②:一方向の状態遷移で論理的整合性を保つ • 実装③:前回アップロードとの競合を防ぐ • まとめ
3 • 株式会社HRBrain • X: https://x.com/tasuku_web • 新潟県の佐渡島出身 • 新卒で外交船航海士の道へ
• ウェブ制作やアナリティクスに転向 • Vue Fes Japan 2025 参加 • 相撲部屋や洞窟探検のYoutubeを観てます 自己紹介 渡邉 佑 Tasuku Watanabe
Progress Toast 4 何を作ったのか • リアルタイム進捗表示 • 複数の独立したトースト • キャンセル機能
• 結果に応じたステータス表示
5 何を作ったのか 進捗割合を表示 結果に応じてステータスが変化
onUploadProgress コールバック • ProgressEvent.loaded: 送信済みバイト数 • ProgressEvent.total: 総バイト数 • リアルタイムで進捗率を計算・更新
6 技術的アプローチ
7 実装①:配列管理とグローバル配信 • 配列で複数のProgress Toastを保持 • Context経由でアプリ全体からアクセス可能 • 各コンポーネントが独立してトーストを追加・削除
8 実装②:一方向の状態遷移で意図しない更新を防止 • 一方向遷移で状態の論理が明確(progress→success) • ユーザーに混乱を与える、誤った状態変化を防ぐ(success→progress)
9 • useRefでAbortController参照を永続化 • 新規アップロード時の前回処理の中断 • 状態競合を防ぐ識別機構で安全性確保 実装③:前回アップロードとの競合を防ぐ
• onUploadProgressでリアルタイム進捗表示 • Context配信でアプリ全体からアクセス可能 • AbortControllerで安全な中断制御 • 一方向状態遷移で意図しない更新を防止 10 まとめ
ご清聴ありがとうございました!