鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML/ 關(guān)于vue-router跳轉(zhuǎn)后history.state的疑問(wèn)

關(guān)于vue-router跳轉(zhuǎn)后history.state的疑問(wèn)

已知history.pushState是個(gè)同步事件
vue-router也是基于這個(gè)方法包裝的
vue-router中還有個(gè)發(fā)生在跳轉(zhuǎn)之后的生命周期afterEach
我將在這里面試圖查詢(xún)history.state
發(fā)現(xiàn)它會(huì)提供一個(gè)這樣的對(duì)象{key: /d+.d{2}/},雖然沒(méi)找到文檔,驗(yàn)證后發(fā)現(xiàn)key的內(nèi)容應(yīng)該是主組件啟動(dòng)后每次跳轉(zhuǎn)時(shí)的時(shí)間
問(wèn)題在這里,afterEach的調(diào)用時(shí)機(jī)發(fā)生在跳轉(zhuǎn)之后,也就是history.pushState調(diào)用后
這時(shí)候history.state應(yīng)該是已經(jīng)更新而且不變的了
但是我在這個(gè)勾子里同步打印history.state,或者設(shè)置個(gè)異步去打印history.state
他們的值是不一樣的,這是什么原因

圖片描述
這是代碼

圖片描述
這是觸發(fā)router.push時(shí)發(fā)生的跳轉(zhuǎn).同步異步都是不一致的
圖片描述
這是使用瀏覽器自帶的前進(jìn)/后退時(shí)打印的值,同步異步一致

回答
編輯回答
憶當(dāng)年

https://github.com/vuejs/vue-...
clipboard.png

clipboard.png
仔細(xì)看這個(gè)文件的這兩個(gè)位置。你可能就會(huì)知道為什么第一次會(huì)不一樣。因?yàn)閳?zhí)行順序。并不是afterEach是地址變化之后。

2018年7月3日 06:44