Heim > Web-Frontend > js-Tutorial > Hauptteil

So kehren Sie nach einem Seitensprung in Vue zur Ausgangsposition der Originalseite zurück

亚连
Freigeben: 2018-06-06 10:57:02
Original
5159 Leute haben es durchsucht

Im Folgenden werde ich Ihnen eine Methode zur Rückkehr zur ursprünglichen Position der Originalseite nach einem Vue-Seitensprung vorstellen. Sie hat einen guten Referenzwert und ich hoffe, dass sie für alle hilfreich ist.

Wie kann dieses Problem gelöst werden, nachdem die Vue-Seite zu einer neuen Seite gesprungen ist und dann von der neuen Seite zur Originalseite zurückgekehrt ist? Zunächst sollten wir den Scrolly aufzeichnen, der beim Verlassen der Seite herausgesprungen ist. Wenn wir zur ursprünglichen Seite zurückkehren, setzen wir einfach die Rückkehrposition auf den aufgezeichneten Scrolly. Ich verwende den Vuex-Statusmanager, um den Scrolly zu speichern. Die gesamte Umgebung basiert auf Vue-Cli

1. Vuex in main.js konfigurieren

//引用vuex 
import Vuex from 'vuex' 
Vue.use(Vuex)
Nach dem Login kopieren

2 . Vuex-Statusverwaltung in main.js

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

Drei, Hier ist eine Listenansichtsseite und eine Detailseite, listview Die Seite ist die Originalseite und springt dann zur Detailseite zurück. Schreiben Sie Code auf der Listview-Seite

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) 
 } 
 } 
 }
Nach dem Login kopieren

4. Wenn Sie die Ausführung des erstellten Lebenszyklus vermeiden möchten, können Sie den Cache keepAlive verwenden, der auch hier geteilt wird

(1) App.vue-Vorlage

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

(2) router 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
Nach dem Login kopieren

Das Obige ist das, was ich für alle zusammengestellt habe alle in der Zukunft.

Verwandte Artikel:

Implementierung der Datumsauswahlkomponente im mobilen Vue-Terminal

Verwendung des Knotens zur Implementierung des integrierten Debugging

Webpack-gepackte Dateien reagieren (ausführliches Tutorial)

Das obige ist der detaillierte Inhalt vonSo kehren Sie nach einem Seitensprung in Vue zur Ausgangsposition der Originalseite zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage