【bug】el-tabs重新赋值不触发,切换值没有对应回显,tabs下的蓝色横线没对应等踩坑记

1,253 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路 一下午遇到两个和el-tabs切换有关的bug,还是记录下吧 bug1 第一个页面有两个tabs,从a切到b的时候要做一些判断,如果不满足 条件要阻止切换,我用的是before-leave切换标签之前的钩子,a页面是编辑列表,用form包裹后,使用的是form的表单校验。

只是form表单校验加return false是阻拦不住切换的,改成return reject()会报错 所以我用的是async 和await搭配return reject()

在b页面保存后,需要留在b页面,因为在保存的方法中先关闭路由,然后又重新打开路由,导致a页面数据还没有重新赋值,而tab的值已经先赋了,所以before-leave钩子函数报错,return之后,导致切不过去。

解决方法:在获取详情的接口里先赋值给a数组,再加个.then,保证tab 赋值在后,这样就不报错了

 .then(() => {
            this.activeNames = 'secondTab'
          })

bug2 首页切换到其他页签,再切回来的时候,tab的位置不能变 这个bug其实解决起来非常快,但是排查花了很多时间 el-tab-pane用的循环,从官网复制的时候,只定义了name,key随机定义的,发现key不对的时候,也只是改成了绑index,一直到重新翻文档的时候才发现,它的key绑的也是name,换成name后就对了 关键代码 :key="item.name"

<el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
  <el-tab-pane
    v-for="(item, index) in editableTabs"
    :key="item.name"
    :label="item.title"
    :name="item.name"
  >
    {{item.content}}
  </el-tab-pane>
</el-tabs>