vue问卷自动保存采用“输入驱动+防抖+生命周期兜底”机制:监听关键字段、800ms防抖写入localstorage,页面加载时校验结构并恢复有效草稿,离开前强制保存且防重复,辅以5分钟可见性感知的轻量同步。

Vue 实现问卷自动保存草稿的定时触发机制,核心不是靠“定时器轮询”,而是以用户输入为驱动、结合防抖 + 页面生命周期兜底,再辅以 localStorage 持久化。真正可靠的自动保存,从来不是每 30 秒强制存一次,而是“有变更就准备存、等得够久才真存、关页面前必须存”。
按字段监听 + 防抖写入 localStorage
避免监听整个表单对象(性能差、易误触发),应聚焦关键字段(如 title、content、questions),每个字段单独 watch,并统一走防抖逻辑:
- 用 useDebounceFn(或手写 setTimeout 清除逻辑)包裹保存函数,延迟 800ms 执行
- 每次输入更新时重置计时器,仅最后一次输入后执行 localStorage.setItem
- 序列化前过滤不可 JSON 化的值(如函数、undefined),推荐用 JSON.stringify(JSON.parse(JSON.stringify(form))) 简单净化,或加白名单校验
- key 命名建议含业务标识,例如 `draft_${route.name}_${userId}`,避免多问卷/多用户冲突
页面加载时自动恢复草稿
mounted 阶段不是简单读取就完事,需判断草稿是否“可用”:

