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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tasuku Watanabe
November 14, 2025
Programming
600
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
540
useImperativeHandleで理解する クロージャと評価タイミング
tasukuwatanabe
1
100
Other Decks in Programming
See All in Programming
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
Performance Engineering for Everyone
elenatanasoiu
0
270
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.1k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
240
えっ!!コードを読まずに開発を!?
hananouchi
0
210
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
330
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
370
5分で問診!Composer セキュリティ健康診断
codmoninc
0
270
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
130
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
500
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.9k
Between Models and Reality
mayunak
4
370
Building Flexible Design Systems
yeseniaperezcruz
330
40k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
460
Building Adaptive Systems
keathley
44
3.1k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
We Have a Design System, Now What?
morganepeng
55
8.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
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 まとめ
ご清聴ありがとうございました!