问题:使用mode为vertical的el-menu组件时,鼠标移入第一级的submenu菜单时,报错Maximum call stack size exceeded.即内存溢出
报错的地方对应本地的代码是element-ui的js文件
原因:
由于菜单的级数不固定,使用了自定义组件嵌套使用其自身的方式实现递归渲染。这样的问题是,每次进入3707行的判断时其this.
p
a
r
e
n
t
.
parent.
parent.el都指向了其自身,所以造成了事件触发进入死循环。由于第一级的submen默认的popper-append-to-body字段值为true,如果设置为false其移入后悬浮出的菜单无法展示,所以无法通过修改该字段的值解决问题:
解决:一级菜单都直接写在el-menu标签内,其他子级菜单可使用自定义组件。
自定义组件代码大致如下: