移動端頁面H5,在列表頁悍抑,點擊跳到詳情頁鳄炉,再按瀏覽器的返回鍵,回到列表頁搜骡,需要保持滾動條原位置拂盯。
過程:
1.一開始我還以為和PC端一樣,因為之前有過經(jīng)驗记靡,React需要依賴第三方插件谈竿,可以搜一些keep-alive
的插件团驱,比如react-router-cache-route
,react-live-route
,這種需要webpack配置進去或者hack路由組件空凸,其實原理就是用css的隱藏dom來代替模擬路由的卸載嚎花,css的dom隱藏,不會卸載銷毀組件呀洲,也不會銷毀組件中的state紊选,還可以保留滾動條位置
移動端我一開始以為也需要這樣,后來發(fā)現(xiàn)如果移動端跳轉(zhuǎn)的時候用
window.open(xxxxx,"_self")
道逗,這樣子跳到詳情頁兵罢,然后按瀏覽器返回鍵,能自動保留滾動條位置滓窍,自動keep-alive
了卖词,就一開始用的是history.push
沒能成功保留,用window.open(xxxxx,"_self")
反而能在瀏覽器里緩存住吏夯,window.open(xxxxx,"_self")
實現(xiàn)的效果在PC端模擬的移動設(shè)備上無效此蜈,在移動真機上有效a標(biāo)簽的href 也有以上效果
原理: 移動端瀏覽器有 往返緩存
功能,現(xiàn)在的PC端chrome是移除了這個功能的噪生,詳見大佬文章 裆赵,很詳細(xì)https://github.com/LeuisKen/leuisken.github.io/issues/6
如果想禁用往返緩存功能,則
image.png