• vue-router scrollBehavior的用法


    问题: 使用keep-alive标签后部分安卓机返回缓存页位置不精确问题

    解决方案:

    <div id="app"> <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view> </div>
    const router = new Router({
    scrollBehavior(to, from, savedPosition) {
    if (savedPosition && to.meta.keepAlive)
      { return savedPosition; } return { x: 0, y:0 };
    },
    });
     

    2. 页面返回出现空白屏问题

    解决方案一
    
    在接口请求成功后的回调操作完成后进行该操作,例如
    // fetchCourseList是一个封装好的Promise请求
    fetchCourseList().then(({ data: courses }) => {
      this.courses = courses;
    }).then(() => {
        setTimeout(() => {
            window.scrollTo(0, 1);
            window.scrollTo(0, 0);
        });
    });
    

    解决方案二(推荐)

    const router = new Router({
      scrollBehavior(to, from, savedPosition) {
        // keep-alive 返回缓存页面后记录浏览位置
        if (savedPosition && to.meta.keepAlive) {
          return savedPosition;
        }
        // 异步滚动操作
        return new Promise((resolve) => {
          setTimeout(() => {
            resolve({ x: 0, y: 1 });
          }, 0);
        });
      },
    });
    


  • 相关阅读:
    列举面向对象中的特殊成员以及应用场景
    python中os和sys模块
    谈谈你对闭包的理解?
    Python面试题(练习一)
    logging模块的作用以及应用场景
    Python的垃圾回收机制
    Python的深浅copy
    rust 支持的CPU架构
    Rust 数据类型
    网站用https访问的问题
  • 原文地址:https://www.cnblogs.com/qq735675958/p/9287438.html
Copyright © 2020-2023  润新知