vue + element 导航点击不失色

在Vue+Element的项目中,使用sessionStorage实现导航点击不失色的方法在复杂场景下会出现问题,如前进后退操作及分享链接时状态丢失。文章详细描述了这些问题,并提出新的解决方案——直接监听路由变化,动态更新导航激活状态,确保在任意操作下都能正确保持导航高亮。
摘要由CSDN通过智能技术生成
逛了一圈论坛,发现都是复制粘贴的,好多都是用 sessionStorage 做的。

参考帖子:sessionStorage 实现 点击导航不失色
当时我也是按这种方法做的,做的时候没问题,到测试时候问题就大了。
首先出现的问题就是,在页面比较多的情况你得在跳转的同时存上这个状态,比如 A 页面有 1 2 3 导航,你点 1 导航进入 B 页面。这时候没问题。
因为你在 A 页面时候已经存了一个 1 的状态,所以从 B 页面跳回 A 时, 1 是没问题的。
但是,你从 B 页面跳到 C D F G 页面时候,经过了多重路由跳转,最终到了 G 页面,但是需求时 G 页面有个按钮是跳回 A 页面的 2 导航的。
这时候你人还没傻掉,你想着,欸,那我在每个跳转的时候在存下状态不就行了嘛,麻烦是麻烦点,但也能实现最终的目标呀。我当时也是这么想的,实在是 Too Young Too Simple。
为什么呢,因为你页面上的按钮确实都没有问题了,但是页面外的会出问题啊,用户看页面是用的浏览器的,浏览器最左上面的是什么? 是 前进 后退 啊喂,请问点这两个按钮的时候你怎么保存状态,大E了有没有,人都傻了,只能全部改掉了。
哦对了,这种方案你自己电脑运行没毛病,你在 B 页面时候把 B 页面分享给你的好基友,你好基友从B 页面返回 A 时候就会发现,哦豁,怎么没有导航激活的状态了?嗯?嗯ÿ

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
VueElement UI是非常常用的前端开发工具,可以帮助我们快速构建漂亮且功能强大的导航页。 首先,你需要确保已经安装了VueElement UI。可以通过npm或yarn来安装它们: ``` npm install vue npm install element-ui ``` 或者 ``` yarn add vue yarn add element-ui ``` 接下来,你可以创建一个Vue组件来实现导航页。假设你的导航页需要有多个菜单项,你可以使用Element UI的Menu组件来实现。 在你的Vue组件中,首先导入所需的Element UI组件: ```vue <template> <div> <el-menu :default-active="activeIndex" mode="horizontal"> <el-menu-item index="1">菜单项1</el-menu-item> <el-menu-item index="2">菜单项2</el-menu-item> <el-menu-item index="3">菜单项3</el-menu-item> </el-menu> </div> </template> <script> import { Menu, MenuItem } from 'element-ui'; export default { components: { 'el-menu': Menu, 'el-menu-item': MenuItem, }, data() { return { activeIndex: '1', // 默认选中的菜单项 }; }, }; </script> <style> /* 样式可以根据需要自行调整 */ </style> ``` 以上代码中,我们使用了`el-menu`和`el-menu-item`来创建菜单和菜单项。`default-active`属性用于设置默认选中的菜单项,你可以根据需要进行调整。 最后,在你的主Vue实例中引入该组件,并将其挂载到一个HTML元素上: ```vue <template> <div id="app"> <my-navigation></my-navigation> </div> </template> <script> import MyNavigation from './MyNavigation.vue'; export default { components: { 'my-navigation': MyNavigation, }, }; </script> ``` 这样,你就可以在你的Vue应用中使用这个导航页组件了。记得在入口文件中引入Element UI样式文件: ```javascript import 'element-ui/lib/theme-chalk/index.css'; ``` 希望对你有所帮助!如有更多问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值