vue2.0 頁面A跳轉到頁面B,B頁面停留在A頁面的滾動位置的解決方法


如果頁面A沿Y軸滾動一段距離,然后跳轉到頁面B;

在進入B頁面時,B頁面已經滾到頁面A的距離,返回頁面A,發現A還在之前的滾動位置;

這樣體驗就很不好,所以我們要進行一些處理;

我的方法是:在路由守衛回調中,設置每次進入路由時,將window的scroll值設置為0;window.scroll(0, 0);代碼如下

// 全局路由守衛
router.beforeEach((to, from, next) => {
  // to: Route: 即將要進入的目標 路由對象
  // from: Route: 當前導航正要離開的路由
  // next: Function: 一定要調用該方法來 resolve 這個鈎子。執行效果依賴 next 方法的調用參數。
  // A跳轉到B,B頁面停留在A頁面的滾動位置;解決方法:將scrollTop設置為0
  window.scroll(0, 0);
  // nextRoute: 設置需要路由守衛的路由集合
  const nextRoute = ['home', 'good-list', 'good-detail', 'cart', 'profile'];
  let isLogin = global.isLogin;  // 是否登錄
  // 未登錄狀態;當路由到nextRoute指定頁時,跳轉至login
  if (nextRoute.indexOf(to.name) >= 0) {  
    if (!isLogin) {
      console.log('what fuck');
      router.push({ name: 'login' })
    }
  }
  // 已登錄狀態;當路由到login時,跳轉至home 
  if (to.name === 'login') {
    if (isLogin) {
      router.push({ name: 'home' });
    }
  }
  next();
});

 

就這樣簡單


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM