SessionStorage 适合向导式弹窗中保存临时会话数据,如多步表单中间状态;其生命周期与标签页绑定,关闭即清空;推荐统一序列化整个向导状态对象存取,并配合步骤切换自动同步,注意跨 iframe 或新窗口不共享。

SessionStorage 适合在向导式弹窗中保存用户当前会话的临时数据,比如多步表单的中间输入、当前步骤索引、已选选项等。它的生命周期与标签页绑定,关闭页面即清空,天然契合“一次向导流程”的需求。
用 key-value 方式存取步骤数据
向导每一步的数据可以按步骤名或序号作为 key 存储,例如:
- 第一步填写姓名:
sessionStorage.setItem('step1_name', '张三') - 第二步选择城市:
sessionStorage.setItem('step2_city', '上海') - 当前进行到第几步:
sessionStorage.setItem('currentStep', '2')
读取时直接用 getItem,比如 sessionStorage.getItem('step1_name'),返回字符串,注意数值或对象需自行解析(如用 JSON.parse)。
存对象建议统一序列化
不要直接存对象,SessionStorage 只支持字符串值。推荐把整个向导状态封装成一个对象,统一存取:
立即学习“Java免费学习笔记(深入)”;
批量分析录音转写,输出多维度拓客报告。触发词:录音分析、总结、音频总结、拜访记录总结。当用户提及「分析录音」「看看录音数据」「最近的录音」「通话记录」且意图为批量统计/分析时触发。仅出现「录音」或「拜访」时需结合上下文,若仅查看单条详情则不触发。
- 收集所有步骤数据后:
const wizardData = { step1: { name: '张三' }, step2: { city: '上海' }, current: 2 }; sessionStorage.setItem('wizardState', JSON.stringify(wizardData)); - 恢复时:
const saved = sessionStorage.getItem('wizardState'); const state = saved ? JSON.parse(saved) : { current: 1 };
这样便于维护,也避免 key 泛滥。记得加 try-catch 防止 JSON 解析失败(比如存储被意外篡改)。
配合路由/步骤切换自动同步
在向导组件中,每次点击“下一步”或“上一步”前,先保存当前步骤数据;跳转后,立即从 SessionStorage 恢复对应字段:
- 离开当前步骤时调用保存函数,只更新当前步骤相关字段,不覆盖其他
- 进入新步骤时,优先读取 SessionStorage 中该步已有值,再填充表单(比如 input 的
defaultValue或受控组件的value) - 用户点“重新开始”,调用
sessionStorage.removeItem('wizardState')或sessionStorage.clear()(慎用,避免清掉其他模块数据)
注意跨 iframe 或新窗口不共享
SessionStorage 不同标签页、不同窗口、iframe 之间完全隔离。如果向导弹窗是 window.open 打开的新窗口,或嵌在 iframe 里,它无法访问父页面的 SessionStorage。此时应:
- 确保弹窗是同一浏览上下文(比如用
dialog元素或绝对定位 div 实现的模态框) - 若必须跨窗口通信,改用
postMessage+ 父子间显式传值,SessionStorage 仅用于单窗口内缓存
不复杂但容易忽略。

















