vue-router 组合式API为什么不提供beforeRouterEnter? #2430
-
需求描述:1.在 A 页面(keep-alive 为 true)中,用户滑动页面到距顶部 200px 的位置。 问题:由于 Vue 3 的组合式 API 不提供 onBeforeRouteEnter 钩子,导致在 B 页面返回到 A 页面时,我不知如何优雅的使用组合式 API 恢复滚动位置。 1.通过在 A 页面多添加一个script并且使用选项式 API 来解决该问题
2.通过在A页面使用,onActivated来替代beforeRouteLeave,因为我设置了keep-alive为true。
但是我觉得这样并不好,是否有更优化的解决办法? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
@LostElkByte 你可以尝试在 defineOptions({
beforeRouteEnter: async (to, from, next) => {
// ...
next()
},
}) 需要注意的是在 这里有一个我整理的 Playground,或许能提供一些参考。 |
Beta Was this translation helpful? Give feedback.
@LostElkByte 你可以尝试在
defineOptions
里面添加beforeRouteEnter
方法:需要注意的是在
beforeRouteEnter
内无法获取到当前组件实例对象,因为当守卫执行时,组件实例还未被创建, 如果你需要记录位置并想在下次获取到上次的位置,你可以使用pinia
或 全局 hook 的形式来记录数据这里有一个我整理的 Playground,或许能提供一些参考。