vue 解决:点击左侧相同菜单,右侧页面不重新加载的问题

1、问题描述:

其一、需求为:
无论是通过路由组件形成的平台管理系统,还是通过文件配置形成的平台管理系统,都存在通过切换左侧的导航栏而使右侧的页面切换的业务需求;

其二、问题描述为:
A、步骤一:
切换左侧不同的导航栏,右侧页面能展示对应的 .vue 文件,且加载都没有问题(即:页面可以加载,对应的接口也可以加载);

B、步骤二:
但要在左侧点击相同页面的导航栏(即:已经展示该页面,再点击左侧相同菜单,右侧页面不再重新加载,当然也没进行刷新操作);

C、步骤三:
想要的效果为:无论点击哪个导航栏菜单,右侧页面都想要被重新加载;

2、问题分析:

猜测重复点击相同页面的导航栏时,页面应该没有销毁和重新加载;

3、问题解决:

其一、点击导航菜单操作过程(即:现存的问题):
A、点击左侧导航栏执行 clickTarget() 函数:

在这里插入图片描述

B、子组件暴露 navigate() 方法及传 lvl3.target 参数:

在这里插入图片描述

C、父组件引入并触发 navigate() 方法:

在这里插入图片描述

// 并通过 curtarget 的值,在 KnsContent 组件中加载;

在这里插入图片描述

D、通过不同的 curtarget 来加载不同且独立的 vue 组件:

在这里插入图片描述

E、存在的问题:

重复点击左侧导航栏的菜单(即:点击左侧导航相同菜单),右侧页面不重新加载,但左侧切换不同的菜单,右侧页面加载就没有问题;

其二、修改的操作为(即:解决问题):
A、父组件引入并触发 navigate() 方法中,添加销毁和重加载操作:

// 当然,此时的 isActived 是已经定义过的;

在这里插入图片描述

在这里插入图片描述

B、通过不同的 curtarget 来加载不同且独立的 vue 组件中,添加 v-if 的操作:

// v-if 可以来控制组件的加载与销毁(即:v-iftrue 时,页面(即:.vue 组件)就加载;而为 false 时,页面(即:.vue 组件)就销毁;)

在这里插入图片描述

C、此时需求就能满足:

修改上述位置代码后,就解决了:点击左侧相同菜单,右侧页面不重新加载的问题;

其三、解决过程剖析:
A、设置 isActived 的初始值为: true

因为项目刚运行打开时,右侧的页面要加载对应的 .vue 组件;
而若此时 isActived 的初始值为 false,那么右侧页面对应的 .vue 组件将会是空的;

B、nextTick() 方法的剖析:

在触发 navigate() 方法,执行语句:isActived.value = false 后, KnsContent 组件就会执行 v-if 的销毁动作并渲染和更新 DOM,而 nextTick() 方法就是要拿到最新的 DOM 后,立即执行 isActived.value = true 操作,然后 KnsContent 组件就再次被加载(即: v-iftrue 的操作)并再次更新 DOM

C、达到目的效果:

nextTick() 方法的使用下,就是实现了:点击左侧相同菜单,右侧页面也重新加载;

4、小结:

其一、哪里有不对或不合适的地方,还请大佬们多多指点和交流!
其二、若有转发或引用本文章内容,请注明本博客地址(直接点击下面 url 跳转) https://blog.csdn.net/weixin_43405300,创作不易,且行且珍惜!
其三、有兴趣的话,可以多多关注这个专栏(Vue(Vue2+Vue3)面试必备专栏)(直接点击下面 url 跳转):https://blog.csdn.net/weixin_43405300/category_11525646.html?spm=1001.2014.3001.5482

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子座的男孩

如果可以,请我喝杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值