起因:更新了最新版iview安装包。 iview 2.12.0 关于Menu组件的变动 修复 Menu 在 accordion 模式下,事件 on-open-change 返回错误值的 bug。#3298 这个改动导致main-components/shrinkable-menu/components/sidebarMenu,vue文件在使用menu组件时on-open-change返回值与之前版本不一致,进而导致左侧导航栏使用异常。
异常场景:点击左侧子菜单,该父菜单下所有子菜单收起。当收起其他父菜单下子菜单,点击没被收起的子菜单,之前被收起的全部又被放开了。
我多次测试过后,认为这个使用异常与sidebarMenu,vue文件中的updated函数有关,因为注释掉updated代码就不会再出现异常场景,但影响其他使用(刷新页面后,不会自动对当前打开的子菜单那一栏父菜单打开)。
暂时解决方案:
- 使用2.12.0之前版本的iview。2.将updated使用created去代替,但不清楚其他副作用。
updated代码:
updated () { this.$nextTick(() => { if (this.$refs.sideMenu) { this.$refs.sideMenu.updateOpened(); } }); }
不清楚是否是on-open-change返回值影响了this.$refs.sideMenu.updateOpened()。