1. 问题
vxe-table在当前表格中添加新的一行数据后 ,需要自动保存,也需要年月份有连续性,要及时对输入的数据进行前后校验,避免交叉、不连续等问题。如果调用接口来重新获取列表,则会出现数据来不及保存,而又重新获取列表,导致添加的数据不完整,比如 输入年月202210,会出现 得到的数据是20或者20220等等这种bug
2. key的作用及原理
vue2中当我们渲染数据的时候,要求我们加key值,用来作为数据的唯一标识,key中存在一种diff算法,是为了减少dom操作,当我们数据发生变化时,会根据key值进行操作 当key值变化时,dom进行重新渲染。就是将新的虚拟DOM与重新渲染的虚拟DOM进行一个对比 ,vue中的key属性就是按照这个key的值来一一对比。如果匹配到一样的node节点会便不会重新使用新的虚拟DOM进行渲染,而是采用原有虚拟DOM结构。这是key的作用和原理,其实可以利用这个点 去解决上述问题。
3. 解决
将key绑定一个变量dateTime,在vxe-table中的 编辑完此行之后使用的@edit-closed="editClosedEvent"事件中,dateTime 获取时间。每当时间发生变化时,key也就变化了,就会去重新渲染table表格,这样就解决了 年月份能够及时排序、校验并能够准确的呈现在页面。