-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在 ensureURL
中使用 recoverMeta
会出现的问题
#14
Comments
所以缓存上一次的 是因为你们业务中有类似 消费 meta 的场景存在么? |
@Dante-dan 感谢反馈 Q2: 缓存上次meta的意义是因为插件是基于页面缓存的,所以理论上a -> b 回退到a的时,所有状态都应该被恢复,包括页面数据、页面meta数据。业务场景也是有此需求的,因为原生的meta只有一份,在同步路由的情况下,例如/a/1 -> /a/2,如果在/a/1页面进行meta修改,/a/2页面也进行meta修改,此时在回退到/a/1页面时,应该显示/a/1的meta信息,而非/a/2 |
那现在版本的 另外从 语义的角度讲, |
@Dante-dan 嗯,这部分我会升一个大版本修改成afterEach,至于meta,这个算是相对来说偏向业务性的东西,目前插件设计就是跟页面历史栈保持同步的,每个页面历史栈对应一份meta。如果你那边比较个性化的话,可以考虑fork一个出去,进行针对性的改造。 |
为啥 我已经 fork 了一个,然后我想改成 |
@Dante-dan 因为已经有一些业务在使用了,vue-router版本不能保证,所以需要做版本升级,不然会导致已经使用的业务因为包自动升级导致出现问题 |
在源码
ensureURL
中会会执行以下操作:feb-alive/src/index.js
Line 52 in cd4a9a5
目的是使用缓存的 meta 信息。
然而
ensureURL
的执行周期和beforeEach
并不是完全对等的,在popState
的时候,会执行 TransitionTo . 从而执行 ensureURL 。由此引发的问题,当我想要对特定组件支持手势返回。一般思路如下:
此时返回,
router.beforeEach
并没有执行,因为没有发生路由切换。但是popState -> transitionTo -> ensureURL
, 而ensureURL
中的febRecord
来源其实是beforeEach
,这就导致了两个路由栈的不统一。所以可以考虑将
ensureURL
所执行的内容改到afterEach
吗?The text was updated successfully, but these errors were encountered: