elementUI 使用Tabs 标签页的巨坑

最近在做一个比较大型的项目,其中大量使用到饿了么ui的 Tabs 标签页,刚开始并没有发现异常,随着版本迭代,项目做到后面的时候测试发现了个很奇怪的bug,有时候浏览器直接卡死,甚至无法关闭页面,且没有任何的报错提示。最开始觉得莫名其妙,找不到问题出在哪,经过反复尝试发现bug复现的时候有个共同点就是切换导航菜单或者页面点击跳转,百度过后发现有人说是 Tabs 标签页引起的,需要在el-tabs组件外层使用 row 和 col 组件布局,刚开始不以为然,觉得很荒谬,就没有理会这个方法,直到后面很久都没解决这个bug,抱着死马当作活马医的心态尝试了一下,问题果然解决了,于是在此总结一下Tabs 标签页可能遇到的问题:

1.直接按照官方示例上写,需要在el-tabs外使用 row 和 col 组件布局

<el-row>
    <el-col :span="24">
        <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
            <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
            <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
            <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
      </el-tabs>
    </el-col>
</el-row>

2.elment版本过高,降低版本试试

3.切换内容不写在el-tab-pane元素内,使用vue 内置组件 component 的用法动态切换组件

<el-tabs v-model="activeName">  
            <el-tab-pane label="用户管理" name="first"></el-tab-pane>
            <el-tab-pane label="配置管理" name="second"></el-tab-pane>
            <el-tab-pane label="角色管理" name="third"></el-tab-pane>
            <el-tab-pane label="定时任务补偿" name="fourth"></el-tab-pane>
</el-tabs>
<component :is="isComponent" ></component>
<script>
export default {
    data() {
       return {
       activeName: "first",
            componentsList: {
                first: "First",//需要引入具体的组件
                second: "Second",
          third: "Third",
          four: "Four"
              }
       }
    },
    computed: {
        isComponent() {
              return this.componentsList[this.activeName];
        }
    }
}
</script>
posted @ 2020-01-08 15:32  静享华年  阅读(25870)  评论(2编辑  收藏  举报