页面卡死,注意你的el-tab吧

632 阅读2分钟

谁能想到有一天el-tab会把人逼疯呢。

项目中依赖版本:vue: "^2.5.17", vue-template-compiler: "^2.5.16"

事情是这样的,放完假打算开开心心的来上班,然而假期最后一天,还在路上,就被疯狂@。心态崩了。

有人页面直接死掉,打不开了,过了一会弹窗页面无响应,然后崩掉。

只有一个人出现,最开始怀疑是他电脑环境问题,毕竟大家都在用。

确实,他的电脑自动升级了谷歌最新版。于是我也升级了最新版,然后一切正常...

这就很诡异了。

到了第二天,又多了几个人出现问题...

这...

于是只能跑到出问题的电脑那去调试...而用户还有其他事情要处理,这个调试让彼此都很疲惫。

真是个复杂的调试过程,将页面模块一个个排查,终于排查到了具体模块。此间艰辛省略一万字。

具体模块检查了很久,没有什么风险代码。于是开始清空这个模块,发现只要加上了<el-tab-pane></el-tab-pan>部分就会卡死,哪怕里面的内容全注释掉。

问题逐渐变得诡异。

也是灵机一动。

谷歌一下。

发现还真有被<el-tab>卡死的事情。

问题原因: 在 Vue2.x 的项目中使用 Element-UI 的 el-tabs 组件,会无端导致页面卡死,任何按钮都无法点击,Chrome 浏览器直接报出页面无响应的 bug 。而我们系统突然出现,可能是 Chrome 浏览器自动升级的版本触发了这个bug

其实解决方案更诡异。

el-tabs外层包裹上<el-row><el-col>.

<el-row>
  <el-col :span="24">
    <el-tabs
        v-model="activeName"
        @tab-click="tabClick">
      <el-tab-pane>
          页面内容
      </el-tab-pane>
    </el-tabs>
  </el-col>
</el-row>

这个问题得到的结论是,不要盲目相信组件,无论使用多广泛的组件,都有可能触发无法预料的坑,甚至它还不打算解决。这就需要我们开发人员多积累经验了。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情