SessionStorage 可通过结构化键名、实时同步、类型一致和适时清理来可靠保存多选状态。例如用 selected_goods_ids 存字符串 ID 数组,change 时存 JSON 字符串,加载时 parse 还原,重置时 removeItem,全程保持 ID 类型一致。

SessionStorage 可以很好地保存多选列表的勾选状态,实现跨页面时用户选择不丢失,关键在于合理存取、及时清理、避免数据膨胀。
用键名结构化存储选中项
不要把整个列表数组直接塞进一个 key,而是按业务维度拆分。比如列表属于“商品管理页”,可统一用 selected_goods_ids 作为 key;若同一页面有多个可选区域(如“已选规格”和“待分配角色”),就分别用 selected_specs 和 selected_roles。这样逻辑清晰,也方便单独清除某类状态。
勾选/取消时实时同步到 SessionStorage
监听复选框的 change 事件,每次操作都更新对应 key 的值:
抓取并分析 OpenClaw JSONL 会话日志,重建并回填代理记忆文件。适用于:(1) 模型切换后记忆不完整,(2) 验证记忆覆盖度,(3) 重建丢失记忆,(4) 通过 cron/heartbeat 自动同步每日记忆。支持简单提取及基于 LLM 的叙事摘要,并自动清理敏感信息。
- 获取当前所有被勾选的 item ID(如 [102, 205, 311])
- 用 JSON.stringify() 转为字符串后存入 SessionStorage
- 页面加载时,用 JSON.parse() 读取并还原勾选状态
注意生命周期与清理时机
SessionStorage 在标签页关闭后自动清空,但用户可能在同一页反复筛选、重置列表。建议:
立即学习“前端免费学习笔记(深入)”;
- 点击“重置筛选”或“清空选择”按钮时,主动调用 removeItem('selected_goods_ids')
- 进入新流程(如提交成功跳转)前,根据业务需要决定是否保留或清除
- 避免在页面 unload 事件里手动 clear,容易误清其他无关数据
处理 ID 类型与数据一致性
后端返回的 ID 常为字符串,前端取值时若用 Number() 转换再存,可能导致比对失败。统一用原始类型存储:
- 从接口拿到的 ID 是字符串,就保持字符串存入
- 渲染列表时,checkbox value 也设为字符串,避免隐式转换
- 还原勾选时用 === 精确匹配,防止 '123' 和 123 被当成相同


















