弹窗里编辑用户信息还没点保存,背后列表里的名字已经跟着变了,点取消也回不到原值,控制台没有任何报错。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
const form = reactive(structuredClone(row)); Object.assign(row, form);
v-model 直接绑定了父级传下来的对象引用,输入时改的就是列表里那一份数据,弹窗只是个视图,取消按钮只关了弹窗没做回滚。这一点先确认清楚,后面就不用反复试。
「v-model 对象绑定」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,打开弹窗时深拷贝一份表单数据,别直接引用行对象;保存成功之后再拿这份副本回写到列表里,顺序不能反;取消时直接丢弃副本,不要碰原来那份对象,避免脏写。
改完照着核一遍,取消编辑后列表保持原值,保存后列表才出现新内容,两种操作互不影响。
