Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 是否有任何方法可以获取页面的当前nuxt.js中间件?_Vue.js_Nuxt.js - Fatal编程技术网

Vue.js 是否有任何方法可以获取页面的当前nuxt.js中间件?

Vue.js 是否有任何方法可以获取页面的当前nuxt.js中间件?,vue.js,nuxt.js,Vue.js,Nuxt.js,我很好奇我们是否可以从任何组件访问当前页面的中间件?中间件是在组件之前执行的,并且没有以任何方式在组件内初始化 更新:在auth存储中持久化中间件的状态 export const state = () => ({ isPrivate: false, }) export const mutations = { setPrivatePage(state, value) { state.isPrivate = value }, } export const actions

我很好奇我们是否可以从任何组件访问当前页面的中间件?

中间件是在组件之前执行的,并且没有以任何方式在组件内初始化

更新:
auth
存储中持久化中间件的状态

export const state = () => ({
  isPrivate: false,
})

export const mutations = {
  setPrivatePage(state, value) {
    state.isPrivate = value
  },
}

export const actions = {
  privatePage({ commit }) {
    commit('setPrivatePage', true)
  },

  publicPage({ commit }) {
    commit('setPrivatePage', false)
  },
}
中间件/auth
中调度操作以设置
isPrivate

await store.dispatch('auth/privatePage')
我添加了另一个名为
public
的中间件,将其设置回
false

export default async ({ store }) => {
  await store.dispatch('auth/publicPage')
}
最后,要在每个路由上触发
public
,请将其添加到
numxt.config.js

  // Router
  router: {
    middleware: 'public',
  },

我不太清楚你想做什么。你能给出一个具体的例子吗?当然@kissu,假设我有一个注销按钮,异步执行操作,然后用一个登录链接切换自身。我想检查的是,为了采取行动,这是否发生在auth中间件页面上。谢谢
@nuxtjs/auth
提供了一个Vuex存储模块,您可以在该模块上访问
loggedIn
状态,并查看情况是否如此。您可以在组件内部检查此值,或者,为了获得更全局的解决方案,在Nuxt项目配置上插入整个中间件,并在用户注销后将其踢到登录页面。与其在页面级别上进行,不如在更高的级别上进行,但最终的结果是相同的。该模块还允许通过设置布尔值来拥有“未受保护”的页面。为什么不在中间件中拥有这些页面的数组呢?与其检查中间件以查看用户是否需要重定向,不如在中间件中进行检查:如果页面与中间件中的页面匹配,则重定向他,否则中间件中不需要任何操作。好吧,看起来这是我的另一个好选择,@Ohgodwhy建议跟踪商店中的中间件,或者您建议使用一组私有路由。谢谢您抽出时间,我将尝试两种方法。:)好的,谢谢分享,所以我认为没有办法通过上下文了解中间件采取了什么行动。没有。您需要构建一些东西,例如vuex模块,其中包含对中间件的引用,该中间件执行操作并从中间件提交到存储,以便在到达组件之前从中间件水合。啊哈!是的,这可能对我上面解释的场景有所帮助。谢谢你,我试试看。