繁体   English   中英

如果存储 getter 更改而不重新加载页面,则重新运行 nuxt 路由中间件?

[英]Rerun nuxt route middleware if store getter changes without reloading the page?

鉴于以下中间件,当store.getters.authenticated更改时重新运行逻辑的最佳方法是什么,而不仅仅是在初始加载时。

中间件/auth.js

export default function ({ store, redirect }) {
  if (!store.getters.authenticated) {
    return redirect({ name: "login" })
  }
}

您询问了如何在中间件本身内部重新运行它,这是可能的中间件触发器的第二部分(例如,如果用户在停留在同一页面上时不再经过身份验证)并且没有任何特定操作,例如使用轮询或 websockets 时我想。

同时,第一部分是最简单的:全局调用中间件(在nuxt.config.js中)以在每个页面导航时触发它。
如果他保持在同一页面上,您也可以像您一样使用路由器移动,但此时检查您的 axios 中是否存在错误可能更合适,因为它是发起者。

我也喜欢使用this.$nuxt.refresh()在全局切换帐户时触发所有检查,有助于重新运行所有那些美味的fetch()挂钩。

对我来说,kissu 的答案是不可能的,因为我需要在插件中工作。

但我找到了适合我的用例的解决方法。

if (process.client) {
  this.redirect(window.location.pathname + '#')
}

这样,整个 nuxt 内部都得到了刷新,但页面没有。


注意:在我的情况下不需要状态代码,因为请求仅在客户端发出。

redirect文档:https://nuxtjs.org/docs/2.x/internals-glossary/context#redirect

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM