Element UI导航菜单刷新就复原问题解决方法~

server/2024/9/23 6:29:51/

1、首先要知道为什么一刷新就复原了,是因为default-active属性设置的是默认值,是一个死值,一旦刷新就会复原,造成高亮不能保持,那么怎么解决呢?

2、很简单,无需像一些博主一样绑定path。思路:既然一刷新就复原了,那么我们在切换的时候就将值存储在本地存储或vuex中呗。

方法一:本地存储

javascript"><el-menu:default-active="activeIndex2" class="el-menu-demo" mode="horizontal"@select="handleSelect" background-color="#545c64" text-color="#fff"active-text-color="#ffd04b"
><el-menu-item :index="String(index)" v-for="(item,index) in list" :key="item.id">{{ item.name }}</el-menu-item><el-submenu index="4"><template slot="title">我的工作台</template><el-menu-item index="4-1">设置</el-menu-item><el-menu-item index="4-2" >退出</el-menu-item></el-submenu>
</el-menu><script>
export default {name: "showTop",data() {return {list: [{name:"首页",id:0},{name:"商品",id:1},{name:"订单",id:2},{name:"会员",id:3},{name:"设置",id:4},{name:"管理员",id:5}],activeIndex2: null};},mounted(){if(localStorage.getItem('activeIndex2')){this.activeIndex2 =localStorage.getItem('activeIndex2')}else{this.activeIndex2 =String(this.list[0].id)}},methods: {// 顶部导航栏点击事件handleSelect(key, keyPath) {console.log(key,keyPath);// 解决element ui组件库中顶部导航栏刷新复原问题,也可存储在vuex中localStorage.setItem('activeIndex2',String(this.list[key].id))// 判断是否是退出按钮if(key=='4-2'){// 清空本地缓存的tokenlocalStorage.removeItem('token')// 跳转至登录页this.$router.push({name:'login'})}}},
};
</script>

方法二:vuex+本地存储

javascript"><el-menu:default-active="activeIndex2" class="el-menu-demo" mode="horizontal"@select="handleSelect" background-color="#545c64" text-color="#fff"active-text-color="#ffd04b"
><el-menu-item :index="String(index)" v-for="(item,index) in list" :key="item.id">{{ item.name }}</el-menu-item><el-submenu index="4"><template slot="title">我的工作台</template><el-menu-item index="4-1">设置</el-menu-item><el-menu-item index="4-2" >退出</el-menu-item></el-submenu>
</el-menu><script>
import { mapMutations} from 'vuex';
export default {name: "showTop",data() {return {list: [{name:"首页",id:0},{name:"商品",id:1},{name:"订单",id:2},{name:"会员",id:3},{name:"设置",id:4},{name:"管理员",id:5}],activeIndex2: null};},mounted(){if(localStorage.getItem('activeIndex2')){this.activeIndex2 =localStorage.getItem('activeIndex2')}else{this.activeIndex2 =String(this.list[0].id)}},methods: {...mapMutations(['setActiveIndex2']),// 顶部导航栏点击事件handleSelect(key, keyPath) {console.log(key,keyPath);// 存储到vuex中,但是要记住还需要在vuex中存储到本地存储中this.setActiveIndex2(String(this.list[key].id))// 判断是否是退出按钮if(key=='4-2'){// 清空本地缓存的tokenlocalStorage.removeItem('token')// 跳转至登录页this.$router.push({name:'login'})}}},
};
</script>

 

javascript">//store中的index.js
import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)export default new Vuex.Store({state:{activeIndex:'',},mutations:{setActiveIndex2(state,e){state.activeIndex = ewindow.localStorage.setItem('activeIndex2',e)}},
})
javascript">import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import router from '../router';
import store from '../store';
Vue.use(ElementUI);Vue.config.productionTip = falsenew Vue({router,store,render: h => h(App),
}).$mount('#app')

效果图:


http://www.ppmy.cn/server/100506.html

相关文章

机械行业数字化生产供应链产品解决方案(七)

在机械行业的数字化生产供应链产品解决方案中&#xff0c;通过全面部署物联网&#xff08;IoT&#xff09;传感器、智能分析平台和自动化控制系统&#xff0c;实现对生产设备的实时监控和数据采集&#xff0c;并结合大数据和人工智能技术进行深度分析&#xff0c;从而优化生产调…

达梦数据库(十) -------- mybatis-plus 整合达梦时,自动生成的 sql 语句报错

一丶【问题描述】&#xff1a; mybatis-plus 整合达梦时&#xff0c;应用系统项目的 sql 语句中包含数据库关键字&#xff0c;导致 mybatis-plus 自动生成的 sql 语句会报错&#xff0c;如下图所示&#xff1a; 二丶【问题解决】&#xff1a; 问题原因&#xff1a;mybatis-pl…

BUG分析以及BUG定位

一般来说bug大多数存在于3个模块&#xff1a; 1、前台界面&#xff0c;包括界面的显示&#xff0c;兼容性&#xff0c;数据提交的判断&#xff0c;页面的跳转等等&#xff0c;这些bug基本都是一眼可见的&#xff0c;不太需要定位&#xff0c;当然也不排除一些特殊情况&#xf…

【6大设计原则】依赖倒置原则:构建灵活软件架构的基石 - 通过代码实例深入解析

1.引言 1.1为什么要学习依赖倒置原则 在软件开发过程中&#xff0c;我们经常需要对代码进行修改和扩展。如果代码之间的耦合度过高&#xff0c;那么在进行修改或扩展时&#xff0c;可能会对其他部分的代码产生影响&#xff0c;甚至引发错误。这就要求我们在编写代码时&#xf…

ptqt5 打包把资源文件合进exe文件中 单个exe文件即可

目录 安装 PyInstaller 项目结构 编写 spec 文件 修改代码以嵌入资源 打包应用程序 解释 检查打包结果 使用 PyQt5 开发的应用程序可以通过 PyInstaller 工具打包成单个可执行文件(exe),并将所有资源文件(如图像、图标、样式表等)嵌入到 exe 文件中。以下是如何实现…

MySQL中的锁事

一、概述 锁是计算机在执行多线程或线程时用于并发访问同一共享资源时的同步机制&#xff0c;MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性。 事务的隔离性是由的锁来实现。 二、MySQL并发事务访问的问题 我们已经知道事务并发…

从数字化到数智化:消费零售企业如何实现门店数智化管理?

随着信息技术的飞速发展&#xff0c;数字化已成为企业转型的必经之路。然而&#xff0c;数字化本身并不是目的&#xff0c;而是通往数智化的桥梁。数智化&#xff0c;即数据智能化&#xff0c;是指企业通过数字化手段收集和分析数据&#xff0c;进而利用这些数据驱动决策和创新…

【网站项目】SpringBoot679牙科诊所管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…