2

页面长这样

图一
(图一)
图二
(图二)
点击一级目录中的导航后,会动态更新二级目录中的数据

这个是问题

点击一级目录后,二级目录数据已更新,但高亮状态消失(如:图二),需要重新刷新页面后才会显示

解决思路在这

经检查route.path是正确的,二级目录数据也是正确的;
所以把问题定位到dom加载及渲染顺序上
个人想法:既然数据都是正确的,很有可能就是因为dom还未更新完成,就重新设置了default-active属性,导致匹配不到相应的导航

解决方法来了

给二级目录设置v-if
<el-menu v-if="showDom" router :default-active="$route.path"></el-menu>
watch监听父组件传递过来的数据,在dom更新完成之后改变v-if
 let showDom = ref(true);
 watch(
   () => props.menuChildrens,
   () => {
     showDom.value = false;
     // 在dom更新之后进行渲染
     nextTick().then(function () {
       showDom.value = true;
     });
   }
 );

如有问题,请联系作者,及时纠正


菜鸟码
18 声望3 粉丝