Maison > interface Web > js tutoriel > 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

亚连
Libérer: 2018-06-06 10:57:02
original
5214 Les gens l'ont consulté

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)
Copier après la connexion

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: {} 
})
Copier après la connexion

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) 
 } 
 } 
 }
Copier après la connexion

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>
Copier après la connexion

(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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal