第二步填完点返回去改第一步的手机号,再点下一步,第二步那堆地址信息一个不剩,用户当场就关页面走了。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

<section data-step='1' hidden>…</section>
<section data-step='2'>…</section>
<button type='button' data-back='1'>上一步</button>

每一步单独渲染,切换时把整块表单卸载掉,数据只存在组件的局部状态里,退回再进来等于一次全新初始化,什么都不会留下。这一点先确认清楚,后面就不用反复试。

「多步表单回退清空」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,把各步的数据提到同一个上层状态里统一保存;切换步骤时只隐藏节点或者重新回填,不要销毁;提交前把整张表再校验一次,有错就跳回出错的那一步。

改完照着核一遍,来回切三遍,每一格填过的值都还在,最后提交的内容完整不缺项。

作者 9823189