本文已参与「新人创作礼」活动,一起开启掘金创作之路 一下午遇到两个和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>