分享更有价值
被信任是一种快乐

Vue路由返回恢复页面状态怎么实现

文章页正文上

本文小编为大家详细介绍“Vue路由返回恢复页面状态怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue路由返回恢复页面状态怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。需求场景:首页搜索内容,点击跳转至详情页,页面后退返回主页,保留搜索结果。方案:路由参数;路由守卫在使用 Vue 开发前端的时候遇到一个场景:在首页进行一些数据搜索,点击搜索结果进入详情页面,浏览详情页后返回主页。但这时候之前的搜索记录和翻页就消失了,用户体验不好。所以需要在返回后恢复跳转前的页面参数状态。当然如果条件允许,最简单的办法是点击搜索结果使用新页面打开(例如百度那样)。但当前需求是一个完整的Vue开发的项目,并不是打开站外地址,而且详情的内容也不多,使用新页面不太合适(性能较差而且容易制造巨量标签页)。这里介绍两种比较容易实现的解决方案:方案一:将搜索参数存储在路由参数(route.query)中,加载页面时根据参数搜索优点:刷新不影响;实现简单缺点:参数只能是基础类型、长度受限;路径看起来比较难看;只对浏览器返回有效,手动跳转回首页不行方案二:使用路由守卫钩子,在离开页面前本地存储页面参数(vuex、Local Storage 等等)优点:参数类型长度都比较自由;路径看起来清爽美观;对任意方式返回主页都有效缺点:需要额外进行数据存储操作,如果使用store模式或vuex则刷新页面失效如果参数不多,并且不介意在路径后面有一大串参数(流下强迫症的泪水),可以直接把参数放在路由路径里(比如百度就是这样:baidu.com/s?wd=abc&rsv_spt=1&rsv_iqid=0x8a76279a000e2979&...,可以看到,确实是很长的一大串)。在点击搜索后,使用 vue router 进行跳转并传参:这里要注意 query 传参和 params 传参的区别:前者的参数会以?k1=v1&k2=v2的形式续在路径后面,能直接在地址栏中看到,因此不受页面跳转、刷新影响;后者只在第一次跳转到对应页面时起作用,再刷新跳转就没有了。因此这里要使用 query 传参。如果把参数按照格式手动写在 path 中也是可以的,但易读性和扩展性明显更差,除非只有一两个简单参数,否则不推荐。另外,由于这个参数是要放进路径里的,因此只能是基本类型的键值对,数组或对象不能很好地支持。如果参数简单,可以将相应的对象展开当做参数(需要保证不同对象中没有重名键),但在跳转到的搜索结果页面中读取时,就只能逐个属性的获取。由于我这想存的参数是三个对象,展开成键值取着又太不方便,所以使用了这种方案。由于项目里本来也使用了 vuex,就顺便存在了 vuex 里面,根据实际情况存在哪儿都行。vuex 的缺点是一刷新就刷没了,对于搜索结果这种优化体验性质的功能影响不大;如果有对应需求可以存在 local storage 里面。因为我的需求中有很多中方式改变参数,在改变时存储参数太麻烦,而且容易出错或遗漏。因此这里选择在路由跳转之前再统一存储所需参数。Vue Router 提供了路由导航守卫系列 API 来实现相应功能,具体包括全局的前置/解析/后置守卫、路由配置守卫、组件守卫等方式。所谓”守卫“,其实相当于渲染过程中的”钩子“,与熟悉的 created, mounted 一样。完整的导航解析流程:导航被触发。在失活的组件里调用beforeRouteLeave守卫。调用全局的beforeEach守卫。在重用的组件里调用beforeRouteUpdate守卫 (2.2+)。在路由配置里调用beforeEnter。解析异步路由组件。在被激活的组件里调用beforeRouteEnter。调用全局的beforeResolve守卫 (2.5+)。导航被确认。调用全局的afterEach钩子。触发 DOM 更新。免费云主机、域名调用beforeRouteEnter守卫中传给next的回调函数,创建好的组件实例会作为回调函数的参数传入。显然,这里使用beforeRouteLeave钩子就能很好地满足要求:加载页面时检查是否有保存的参数,有的话进行相应恢复操作:读到这里,这篇“Vue路由返回恢复页面状态怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注云技术行业资讯频道。

相关推荐: react中usestate改变值不渲染怎么解决

这篇文章主要介绍“react中usestate改变值不渲染怎么解决”,在日常操作中,相信很多人在react中usestate改变值不渲染怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react中usestate改变值不渲…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

登录

找回密码

注册