Maison  >  Article  >  interface Web  >  Comment revenir à la position initiale de la page d'origine après un saut de page en vue

Comment revenir à la position initiale de la page d'origine après un saut de page en vue

亚连
亚连original
2018-06-06 10:57:025149parcourir

Ci-dessous, je vais partager avec vous une méthode pour revenir à la position initiale de la page d'origine après un saut de page Vue. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde.

Une fois que la page vue passe à une nouvelle page, puis revient de la nouvelle page à la page d'origine, si vous souhaitez revenir à la position initiale de la page d'origine, comment résoudre ce problème ? Tout d'abord, nous devons enregistrer le scrollY qui a sauté lors du saut hors de la page. Lorsque vous revenez à la page d'origine, définissez simplement la position de retour sur le scrolly enregistré. J'utilise le gestionnaire d'état vuex pour enregistrer le scrolly. L'environnement entier est construit sur la base de vue-cli

1. Configurez vuex dans main.js

//引用vuex 
import Vuex from 'vuex' 
Vue.use(Vuex)

2. gestion de l'état vuex dans main.js

var store = new Vuex.Store({ 
 state: { 
 recruitScrollY:0 
 }, 
 getters: { 
 recruitScrollY:state => state.recruitScrollY 
 }, 
 mutations: { 
 changeRecruitScrollY(state,recruitScrollY) { 
 state.recruitScrollY = recruitScrollY 
 } 
 }, 
 actions: { 
 
 }, 
 modules: {} 
})

3. , Voici une liste page et La page de détails, la page listview est la page d'origine, la page listview passe à la page de détails, puis revient à la position avant de passer à la page de détails, écrivez du code sur la page 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) 
 } 
 } 
 }

4. Si vous souhaitez éviter l'exécution du cycle de vie créé, vous pouvez utiliser le cache keepAlive. Je le partagerai également ici

.

(1) Modèle App.vue

<keep-alive v-if="$route.meta.keepAlive"> 
 <router-view></router-view> 
 </keep-alive> 
 <router-view v-if="!$route.meta.keepAlive"></router-view>

(2) routeur index.js

Vue.use(Router) 
 
const routerApp = new Router({ 
 routes: [{ 
 { 
 path: &#39;/NewRecruit&#39;, 
 name: &#39;NewRecruit&#39;, 
 component: NewRecruit, 
 meta: { 
 keepAlive: true 
 } 
 }, 
 { 
 path: &#39;/NewRecruitDesc/:id&#39;, 
 name: &#39;NewRecruitDesc&#39;, 
 component: NewRecruitDesc, 
 meta: { 
 keepAlive: true 
 } 
 }, 
 { 
 path: &#39;/SubmitSucess&#39;, 
 name: &#39;SubmitSucess&#39;, 
 component: SubmitSucess, 
 meta: { 
 keepAlive: false 
 } 
 } 
 ] 
}) 
 
export default routerApp

Ce qui précède est ce que j'ai compilé pour vous, j'espère que cela vous sera utile à l'avenir.

Articles connexes :

Implémentation du composant de sélection de date dans le terminal mobile vue

Utilisation d'un nœud pour implémenter le débogage intégré

Fichiers packagés React webpack (tutoriel détaillé)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn