- 背景:
项目中有分步多个表单提交 但是表单校验里会出现部分属性校验不生效的问题
,如下图所示,“项目路径”、"用户名"字段前已经出现红色星号 表面表单中rules prop对应的字段正确,但是点击下一步并未正常触发校验
部分表单代码如下,rules 和prop已用红框标识
经Google寻找解决方案无果,最后只能去翻翻vue的官方文档,发现了这一行
尝试在表单中加入key属性,果然成功,那么问题就是出在这里了
因为v-if在两个相同组件且没有key标识唯一性的情况下,会复用已有元素而不是从头开始渲染
开始测试结论
在表单一中添加两个完全一致的输入框
点击下一步,正常校验
将信息补完,点击下一步,进入表单2
再次点击下一步
可以看到 只有前两个输入框正常校验,原因是表单切换用的v-if控制,但是现在未加key,所以渲染的时候直接复用