在Vue中实现随hash改变响应菜单高亮
网络编程 2021-07-04 15:02www.168986.cn编程入门
这篇文章主要介绍了在Vue中实现随hash改变响应菜单高亮的方法,文中还通过实例代码给大家介绍了vue关于点击菜单高亮与组件切换的相关知识,需要的朋友可以参考下
情景
Vue+Element 实现管理页面菜单栏,
点击菜单时 router 改变 hash 访问不同子组件。
改变 hash 时菜单栏展开状态和 highlight 并不会同步,
需要手动实现。
Try Try See
第一反应是通过 onhashchange 监听 hash 的变化,
讲 location.hash.slice
(2) 推给 menu 的 default-active
即可。
此时通过手动输入 url 或者前进后退时均可正常加载对应状态,通过组件中的 link 访问时,menu 的状态没有改变。
加入 alert 验证发现没有触发 hashchange。
Why
Seafault 的解释是
- Vue-Router 底层调用的是 history.pushState
查阅 MDN 发现
- 注意 pushState() 绝对不会触发 hashchange 事件,即使新的 URL 与旧的 URL 仅哈希不同也是如此。
Solution
Vue-Router 的文档中给出两个方案
watch $route 对象 const User = { template: '...', watch: { $route(to, from) { // react to route changes... } } }
使用 beforeRouteUpdate
const User = { template: '...', beforeRouteUpdate(to, from, next) { // react to route changes... // don't fet to call next() } }
原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
知识点扩展
vue关于点击菜单高亮与组件切换
有两种
一种是 使用router-link 这种直接可以用router-link-active 来写高亮样式 组件在路由跳转后 高亮依旧存在
一种是is的应用了 点击触发事件 事件改变currentView的值 可以直接改掉 is 这个引入文件入口
<template> <div class="index"> <div class="headTop"></div> <div class="nav"> <img src="../assets/img/logo.png" alt=""> <el-row :gutter="20"> <el-col :span="3" @click.native="tabChange('FirstScreen')" ><div class="grid-content bg-purple">首页</div></el-col> <el-col :span="3" @click.native="tabChange('pagetwo')"><div class="grid-content bg-purple">场站</div></el-col> <el-col :span="3" @click.native="tabChange('pagethree')" ><div class="grid-content bg-purple">订舱</div></el-col> </el-row> </div> <div :is="currentView"></div> <!-- <div class="aaa" >asdasd</div> --> </div> </template> <script> import FirstScreen from '../views/containers/FirstScreen' import pagetwo from '../views/containers/pagetwo' import pagethree from '../views/containers/pagethree' export default { name: 'index', ponents:{ FirstScreen, pagetwo, pagethree }, data () { return { FirstScreen: 'FirstScreen', pagetwo: 'pagetwo', pagethree: 'pagethree', currentView: 'FirstScreen',//组建切换 activeIndex: '1', activeIndex2: '1', } }, puted:{ }, created(){ }, methods:{ tabChange(tabItem) { this.currentView = tabItem; console.log(this.currentView); } } } </script>
到此这篇关于在Vue中实现随hash改变响应菜单高亮的文章就介绍到这了,更多相关vue 菜单高亮内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南