关于vue-router跳转后history.state的疑问

已知history.pushState是个同步事件
vue-router也是基于这个方法包装的
vue-router中还有个发生在跳转之后的生命周期afterEach
我将在这里面试图查询history.state
发现它会提供一个这样的对象{key: /d+.d{2}/},虽然没找到文档,验证后发现key的内容应该是主组件启动后每次跳转时的时间
问题在这里,afterEach的调用时机发生在跳转之后,也就是history.pushState调用后
这时候history.state应该是已经更新而且不变的了
但是我在这个勾子里同步打印history.state,或者设置个异步去打印history.state
他们的值是不一样的,这是什么原因

图片描述
这是代码

图片描述
这是触发router.push时发生的跳转.同步异步都是不一致的
图片描述
这是使用浏览器自带的前进/后退时打印的值,同步异步一致

阅读 5.8k
1 个回答

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

clipboard.png
仔细看这个文件的这两个位置。你可能就会知道为什么第一次会不一样。因为执行顺序。并不是afterEach是地址变化之后。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题