GH GambleHub

マルチステップフォームとコンテキスト保存

1)原則

1.一つの目標は、いくつかの自然なステップです。データベーステーブルではなく、ユーザーロジックで割る:「データ→確認→完了」。
2.各ステップは完全な意味です。あまりにも細かく粉砕しないでください:3-5ステップが最適です。
3.遷移はコンテキストをリセットしないでください。すべてのフィールド、選択、およびファイルが保存されます。
4.私は戻ってみましょう。バック-データの損失はありません。
5.進捗状況を追跡します。プログレスバー、ステップヘッダー、クリアCTA。
6.ユーザーは去り、戻ることができます。ドラフト-ローカルまたはサーバー上。

2)マルチステップアーキテクチャ

クライアント状態:ローカルストア(React Context/Redux/Signalなど)または一時ストレージ('sessionStorage'、 IndexedDB)。
サーバー状態:'draft_id'でドラフトを作成し、各ステップの後に保存します。
セキュリティ:'draft_id'はユーザーに関連付けられ、N時間で期限切れになります。データは残りで暗号化されます。

ステップ力学:
  • 'currentStep'-現在のステップのインデックス。
  • 'completedSteps'-完了したリスト;
  • 'errors'-ステップごとのエラー;
  • 'progress=current/total'
js const formState = {
draftId: "d-84f...",
currentStep: 2,
steps: [ { id: "personal", completed: true }, { id: "kyc", completed: false } ],
data: { name:"", idPhoto:null },
lastSaved: Date. now()
}

3)ステップおよびレイアウトの設計

構造:上からの垂直ナビゲーション(デスクトップ)/プログレスバー(モバイル)。

ステップの表示名は「1」です。個人データ」「、2。アイデンティティの証明"

CTAボタン:
  • メインは「Next「/」Continue「です。
  • セカンダリ-「戻る」。
  • 最後のステップで-「完了「/」送信「。
プログレスデザイン:
  • 'aria-current=」step」'を使用します。
  • ステップが不均等な場合は%を表示します。
  • 「後で戻ってくることができます」プロンプトを追加します。

4)コンテキストとデータの保存

オートセーブ(Autosave)

保存するとき:
  • フィールド変更(500-1000ミリ秒のデバンクで);
  • 次のステップへ移動
  • タブフォーカスの損失。
ストレージ:
  • locally ('localStorage '/IndexedDB)-フォームが短い場合;
  • サーバー-CCM/支払/アンケート用。
js const saveDraft = debounce(async (data) => {
await fetch('/api/draft', { method:'POST', body: JSON. stringify(data) });
}, 800);

リカバリ

フォームを開くときは、ドラフト('draft_id'またはローカルキー)を探します。

復元するオファー:
💡 "12:42からドラフトを見つけました。保存した場所から続けますか?
  • 競合の場合(新しいフィールド)-変更を強調した「更新ドラフト」。

5) UX遷移パターン

ローカルステップの検証後にのみ前進します。
バック-データ損失がない場合の確認なし。
ネットワークエラーの場合は、ローカルに保存し「、次の接続で復元」を表示します。
URLを任意に変更しないでください:'/form/step/2'→ナビゲーション/回復に便利です。
次のステップへの素早い移行のために'Ctrl+Enter'をサポートします。

6)状態と視覚的な手がかり

進行中:グレー/アクティブインジケータ、ステップは前のものが完了した場合にのみクリック可能です。
完了:緑色のティック/アイコン。編集のために開くことができます。
エラー:赤いアウトライン、フィールドと進行中の行の下のテキスト。
「無効」(Disabled)-現在のステップが非表示または使用不可になった後のステップ。

プログレスバーの例:
html
<nav aria-label = "Progress">
<ol class="steps">
<li class = "done "> <span> 1 </span> Data </li>
<li class = "current" aria-current = "step "> <span> 2 </span> Documents </li>
<li> 3 Verification </li>
</ol>
</nav>

7) A11yと可用性

'aria-current=」step」'をアクティブなステップに設定します。
ステップの変更は「、aria-live=」polite「」によって発声されます。
現在のステップ内の焦点を保って下さい;移行中-ヘッダーに移動します。
タブと入力ナビゲーションは予測可能です。Escはコンテキストを失うべきではありません。
ステップバイステップの進捗バーでは「、role=」list「」、role=「listitem」「、aria-label」を使用します。

8)エラーと割り込み動作

ネットワーク障害:"接続が失われました。データはローカルに保存されます。
タイムアウト:3-5秒で自動的に繰り返します。失敗-オフラインドラフト。

セッションブレイク: ログイン後→「最後のステップから続ける」

ステップエラー:部分的に入力されたフィールドを保存し、問題のあるフィールドを強調表示します。

9)パラレルセッションとセキュリティ

'draft_id'はユーザごとに一意です。
新しいタブを開いたとき-suggest"別のセッションが開いています。ここで更新または続行します。
CCM/財務フォームでは、データはドラフトを保存する前にクライアント(AES/GCM)で暗号化されます。
TTLで下書きを削除します(例えば、7日間の非活動状態)。

10) iGamingシナリオの例

10.1 CCM/検証

1.個人データ→2。ドキュメント→3。チェック→4。完了しました。

写真をアップロードした後に自動保存します。
休憩後のテストステップからの回復。
ステータス「確認待ち」インジケータ付き。

10.2支払/沈殿物

ステップ:1。金額→2。方法→3。確認してください。
メソッドデータはセッション間に保存されます。
金額をクリアせずにメソッド選択に戻ることができます。

10.3制限の設定

ステップはリミットタイプ→値→確認です。
進行状況は残りのステップを示します。

完了後-画面「で有効になります……。」

11)メトリクスとコントロール

完了率:すべてのステップを完了したユーザーの%。
ステップごとのドロップオフ:彼らはどのステップを残します。
1ステップあたりの平均時間。完了までの時間。
自動セーブ成功率。
エラー回復率-障害発生後の回復に成功した割合。

12) Antipatterns

「バック」なしのハードナビゲーション。
再起動時の入力の損失。
コンテキストなしでステップを飛び越えます。
10画面ごとに1つの一般的な提出。
ステップエラー-そして「再起動」。
ネットワーク障害後の空白画面。
セマンティック名のないプログレスバー(「1/4/7」……)。

13)システムトークンの設計(例)

json
{
"steps": {
"radius": 10,
"gap": 8,
"barHeight": 4,
"activeColor": "#2B9F5E",
"inactiveColor": "#E0E0E0"
},
"autosave": {
"debounceMs": 800,
"retryMs": 3000,
"ttlDays": 7
},
"a11y": {
"ariaLive": "polite",
"focusBehavior": "scrollToTitle"
}
}

CSSプリセット

css
.steps { display:flex; gap:8px; list-style:none; counter-reset:step; }
.steps li { position:relative; flex:1; text-align:center; }
.steps li::before { counter-increment:step; content:counter(step); display:block; width:24px; height:24px; line-height:24px; margin:0 auto 4px; border-radius:50%; background:var(--inactive); color:#fff; }
.steps li. done::before { background:var(--success); }
.steps li[aria-current="step"]::before { background:var(--primary); }

14) QAチェックリスト

保存と復元

  • 各ステップでドラフトが作成され、更新されます。
  • 再起動すると、リカバリが利用可能で正しい。
  • バージョンの競合が処理されています(古い/新しい形式)。

ナビゲーション

  • 「戻る」はデータを失うことはありません。
  • URLは現在のステップに対応しています。
  • ステータスと同期したプログレスバー。

ネットワークとオフライン

  • オフラインでローカルに保存され、オンラインで復元されます。
  • 失敗メッセージは理解可能で非破壊的です。

A11y

  • 'aria-current=」step」、' aria-live=「polite」 'work。
  • フォーカスはステップヘッダーに移動します。

パフォーマンス

  • 遷移は瞬時(≤ 100ms)です。
  • 非同期セーブはUIをブロックしません。

15)設計システムにおけるドキュメンテーション

-'StepIndicator'、 'MultiStepForm'、 'AutosaveBanner'、 'DraftRecoveryModal'。
コンテキスト(ローカルとサーバー)、A11yおよびARIA属性を格納するためのガイド。
UXテンプレート:KYC、デポジット、リミット、アンケート、エラー後のリターン。
Do/Don 't with examples of network failure and successful recov。

概要

マルチステップフォームは、ユーザーが気を散らしたり、ページをリブートしたり、ネットワークを失ったりしても、継続的なプロセスのように感じるはずです。自動保存、リカバリ、可視化された進捗状況、安全なリトレイにより、複雑なシナリオ(KYC、支払い、制限)が予測可能で信頼できるエクスペリエンスに変わります。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。