<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近碰到兩個問題:
程式碼如下,在頁數變化的時候,去非同步請求資料,渲染頁面。
const currentChange = (currentPage) => { ajax(`請求地址/${currentPage}`) .then(renderPage) }
經過幾番搜尋,發現可以用History 介面來實現我們想要功能。
按指定的名稱和URL(如果提供該引數)將資料push進對談歷史棧,資料被DOM進行不透明處理;你可以指定任何可以被序列化的javascript物件。具體描述可以參考檔案
通過history.pushState(state, title, url)可以修改對談歷史棧,把我們需要儲存的資料存到state中,這裡我們存入一個物件,屬性為當前頁數;title一般沒什麼用,這裡傳入null;url會修改當前歷史紀錄的地址,瀏覽器在呼叫pushState()方法後不會去載入這個URL
假設當前currentPage為1,當前url為www.example.com/search/index
... const pushState = () => { const url = `/search/index/${currentPage}` history.push({ page: currentPage }, null, url) } const currentChange = (currentPage) => { ajax(`請求地址/${currentPage}`) .then(res =>{ pushState(currentPage) renderPage() }) } ...
現在程式碼執行順序是:頁數改變 => ajax請求 => pushState => renderPage()
在pushState之後當前url變成www.example.com/search/index/1
現在我們通過history.pushState()方法把狀態存入歷史對談中了,接下來就要監聽window.onpopstate事件
參考mdn檔案window.onpopstate
每當處於啟用狀態的歷史記錄條目發生變化時,popstate事件就會在對應window物件上觸發.
呼叫history.pushState()或者history.replaceState()不會觸發popstate事件. popstate事件只會在瀏覽器某些行為下觸發, 比如點選後退、前進按鈕(或者在JavaScript中呼叫history.back()、history.forward()、history.go()方法).
接下來監聽這個事件
window.addEventListener("popstate", (event) => { if(event.state !== null){ page = event.state.page changeCurrentPage(page) // 修改當前頁數 } })
當popstate觸發時,會修改當前頁數,然後觸發之前定義的currentChange方法,更新資料,渲染頁面。
到此為止,問題1就解決了。
接下來要解決問題二:從詳情頁返回列表頁,記住之前的狀態
這裡我用url來記錄狀態,之前pushState推入的url就派上用場了。 只要把進入頁面首次請求的地址改成當前url就可以了
假設之前push的url為www.example.com/search/index/5,從詳情頁返回之後url還會顯示www.example.com/search/index/5
mounted () { ajax(location.href) }
這樣就完成了。 當然如果你的狀態比較複雜,可以把資料存入本地Storage,新增一些判斷即可
以上就是history儲存列表頁ajax請求的狀態使用範例詳解的詳細內容,更多關於history儲存列表頁ajax請求狀態的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45