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 }; }, });
前端全棧學習交流圈:866109386,面向1-3經驗年前端開發人員,幫助突破技術瓶頸,提升思維能力 群內有大量PDF可供自取,更有乾貨實戰專案影片進群免費領取。
-
頁面返回出現空白屏問題
問題
【前提】:iOS裝置 【步驟】: 頁面A是個列表很長-->滑到頁尾的時候點選跳轉之後到頁面B--->再返回A頁面 --->螢幕會出現空白遮罩層--->手指輕觸螢幕滑動--->遮罩層消失
解決方案一
在介面請求成功後的回撥操作完成後進行該操作,例如
// fetchCourseList是一個封裝好的Promise請求 fetchCourseList().then(({ data: courses }) => { this.courses = courses; }).then(() => { setTimeout(() => { window.scrollTo(0, 1); window.scrollTo(0, 0); }); });
該方案的弊端: 每個頁面都需要做這樣的處理,不推薦使用。
解決方案二(推薦)
使用scrollBehavior中的非同步滾動操作
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); }); }, });
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2284093/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vue-router中scrollBehavior的妙用Vue
- 【VUE】vue-router的基本用法Vue
- 淺談Vue-router的部分高階用法Vue
- 對DBGrid 的巧妙用法實現查詢 (轉)
- vue-Router中name的使用Vue
- 巧妙的CSSCSS
- JS apply的巧妙用法以及擴充套件到Object.defineProperty的使用JSAPP套件Object
- vue-router 在模組化 vue中的使用Vue
- 巧妙的煎餅
- js中的this用法JS
- SQL 中With as 的用法SQL
- Oracle中with的用法Oracle
- 一種巧妙POST未選中的Checkbox的方法薦
- 巧妙備份VMware vSphere中的虛擬機器虛擬機
- Vue-router 中hash模式和history模式的區別Vue模式
- MYSQL中replace into的用法MySql
- Java中super的用法Java
- mySQL中replace的用法MySql
- iOS 中 cell的用法iOS
- golang中channel的用法Golang
- 【 Oracle中rownum的用法 】Oracle
- Java中DecimalFormat的用法JavaDecimalORM
- MySQL中limit的用法MySqlMIT
- js中的||與&&用法JS
- c++中::的用法C++
- mysql中count的用法MySql
- java中filter的用法JavaFilter
- java中switch的用法Java
- Oracle 中 case的用法Oracle
- java中Scanner的用法。Java
- JAVA中...的特殊用法。Java
- JavaScript中的setInterval用法JavaScript
- JavaScript中document的用法JavaScript
- vue-router的使用Vue
- JDK中Lambda表示式的序列化與SerializedLambda的巧妙使用JDKZed
- 邦芒面試:巧妙應對面試中的最後提問面試
- 巧妙設定job的interval
- python中return的用法Python