【发布时间】:2020-10-17 11:33:09
【问题描述】:
这是对#1458 的跟进。我正在寻找有关 Nuxt 期望如何处理此问题的方向。
我有一个菜单。当我单击菜单中的 nuxt 链接时,我希望有时间在页面转换发生之前关闭菜单。问题是,我只希望在您单击菜单中的 nuxt-link 时发生这种情况,而不是每次我去某个路线时(如上一期描述的在路线上使用中间件)。
所以有几种不同的方式可以做到这一点,我很好奇“Nuxt”方式是什么?
我们目前这样做的方式,禁用 nuxt-link 并捕获点击,然后执行 router.push()。
<nuxt-link :to="path" event="disabled" @click.native="delayLoad"/>
// Methods
delayLoad(event) {
this.$store.commit("CLOSE_MENU")
setTimeout(()=>{
this.$router.push(event.target.pathname)
}, 2000)
}
这是个好主意吗?我总是讨厌像这样劫持 nuxt-link 和浏览器导航。看起来很笨拙。
我们使用的其他想法是在 nuxt-link 上使用查询参数,然后在中间件中使用它来延迟页面转换。这对我来说似乎更糟,因为现在我的 URL 中有一个用于动画的查询参数,这似乎是在滥用查询参数。这也触发了页面加载进度条,这并不是真正的意图,它是让一个序列动画发生,然后页面加载。
在我看来,也许 nuxt-link 应该有一个延迟属性,或者页面转换配置应该允许延迟(就像它对持续时间所做的那样)?
【问题讨论】:
标签: vue.js nuxt.js transition