您好,欢迎访问一九零五行业门户网

在vue中如何实现页面跳转后返回原页面初始位置

下面我就为大家分享一篇vue页面跳转后返回原页面初始位置方法,具有很好的参考价值,希望对大家有所帮助。
vue页面跳转到新页面之后,再由新页面返回到原页面时候若想返回调出原页面的初始位置,怎么来解决这个问题呢?首先我们应该在跳出页面时候记录下跳出的scrolly,返回原页面的时候在设置返回位置为记录下的scrolly即可,scrolly我用的是vuex状态管理器来保存的。整个环境是基于vue-cli搭建的
一、main.js里面配置vuex
//引用vuex import vuex from 'vuex' vue.use(vuex)
二、main.js里面vuex状态管理
var store = new vuex.store({ state: { recruitscrolly:0 }, getters: { recruitscrolly:state => state.recruitscrolly }, mutations: { changerecruitscrolly(state,recruitscrolly) { state.recruitscrolly = recruitscrolly } }, actions: { }, modules: {} })
三、这里列举一个listview页面和详情页面,listview页面就是原始页面,listview页面跳转到详情页面,然后返回时候回到跳转到详情页面之前的位置,在listview页面编写代码
beforerouteleave(to, from, next) { let position = window.scrolly //记录离开页面的位置 if (position == null) position = 0 this.$store.commit('changerecruitscrolly', position) //离开路由时把位置存起来 next() }, watch: { '$route' (to, from) { if (to.name === 'newrecruit') {//跳转的的页面的名称是"newrecruit",这里就相当于我们listview页面,或者原始页面 let recruitscrolly = this.$store.state.recruitscrolly window.scroll(0, recruitscrolly) } } }
四、若要避免created生命周期的执行,可以使用缓存keepalive,这里也分享一下
(1)app.vue template
<keep-alive v-if="$route.meta.keepalive"> <router-view></router-view> </keep-alive> <router-view v-if="!$route.meta.keepalive"></router-view>
(2)router index.js
vue.use(router) const routerapp = new router({ routes: [{ { path: '/newrecruit', name: 'newrecruit', component: newrecruit, meta: { keepalive: true } }, { path: '/newrecruitdesc/:id', name: 'newrecruitdesc', component: newrecruitdesc, meta: { keepalive: true } }, { path: '/submitsucess', name: 'submitsucess', component: submitsucess, meta: { keepalive: false } } ] }) export default routerapp
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
在vue移动端中实现日期选择组件
使用node实现内置调试
react webpack打包后的文件(详细教程)
以上就是在vue中如何实现页面跳转后返回原页面初始位置的详细内容。
其它类似信息

推荐信息