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

Javascript 如果存储getter更改而不重新加载页面,是否重新运行nuxt路由中间件?,javascript,vue.js,nuxt.js,middleware,Javascript,Vue.js,Nuxt.js,Middleware,给定以下中间件,当store.getters.authenticated发生变化时(而不仅仅是在初始加载时),重新运行逻辑的最佳方式是什么 中间件/auth.js 您询问了如何在中间件本身内部重新运行它,这是可能的中间件触发器的第二部分(例如,如果用户在停留在同一页面时不再进行身份验证),并且没有任何特定的操作,例如我认为在使用轮询或WebSocket时 同时,第一部分是最简单的:全局调用中间件(在numxt.config.js中),在每个页面导航中触发它。 如果他停留在同一页面上,您也可以像以

给定以下中间件,当
store.getters.authenticated
发生变化时(而不仅仅是在初始加载时),重新运行逻辑的最佳方式是什么

中间件/auth.js


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

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


我还喜欢使用
this.$numxt.refresh()
在全局切换帐户时触发所有检查,帮助重新运行所有美味的
fetch()
钩子。

因为它是一个中间件,它应该经常调用自己。否则,您可以使用vuex“
watch
方法和watch
store.getters.authenticated
old vs new value:抱歉,我似乎错过了您的评论。就个人而言,这种方法感觉有点不合适。存储不应该负责检查权限和重定向,这就是nuxt中中间件的设计目的。最后我做了'this.$router.go()`,刷新页面以重新运行中间件。更改权限意味着您已经做了重大更改(切换帐户或注销),在这种情况下,刷新是完全合理的,并且不容易出错。是的,我有时也会这样。即使跟踪帖子也没有得到通知(有时希望如此)。希望这不是一个全球性的问题。贴出答案,这样你可能会看到。
export default function ({ store, redirect }) {
  if (!store.getters.authenticated) {
    return redirect({ name: "login" })
  }
}