如何防止用户在Nuxt中使用中间件离开页面?

问题描述 投票:0回答:1

我有一个Nuxt应用程序,在一些特殊的路由中,我想通过显示简单的确认javascript对话框来阻止用户离开页面。

我之前做了一些路由莱夫< - 这个在Vue官方文档中引入的东西,但它们似乎都没有在Nuxt中工作。

Nuxt建议用户使用中间件来做“beforeRoute”事情。这是我的代码。

export default function (context) {
    if (process.client &&
        context.from.path.includes("board/write") &&
        context.route.name !== "board-articleId") {
        if (!confirm("Are you sure you want to leave the page?")) {
            context.next(false)
        }
    }
}

正如您所看到的,我正在检查我当前的路由是否是特定页面(context.from.path ...),询问用户是否要离开页面。如果他们取消,这证实是假的,那么

下一个(假)

它工作正常,因为它使用户留在页面上。

但问题是,即使页面没有改变,浏览器的加载栏仍会加载。尽管实际页面没有变化,但看起来路线仍然在变化。

我怎样才能防止这种情况发生?

vue.js router middleware guard nuxt
1个回答
0
投票

我本来可以用的

redirect(from.path)

代替

next(false)

为了便于获取信息,传入参数“context”具有如下属性:

from, route, next, redirect...

0
投票

为了确保地址栏查询(?bla=bla)未被触及我建议这样做:

export default function ({ from }) {
  redirect(from);
}
© www.soinside.com 2019 - 2024. All rights reserved.