Vuejs2 beforeCreate()钩子上未定义Nuxt存储映射器属性

Vuejs2 beforeCreate()钩子上未定义Nuxt存储映射器属性,vuejs2,nuxt.js,Vuejs2,Nuxt.js,我在使用vuex的nuxt应用程序中遇到错误。我试图使用mapGetters助手访问存储getter,但当我在beforeCreate()中访问该属性时,钩子值未定义 store/user.js mycomponent.vue 导出默认值{ beforeCreate(){ const isLoggedIn=this.$store.getters[“user/isLoggedIn”]; log(“computed isLoggedIn”,this.isLoggedIn); log(“isLogge

我在使用vuex的nuxt应用程序中遇到错误。我试图使用mapGetters助手访问存储getter,但当我在beforeCreate()中访问该属性时,钩子值未定义

store/user.js

mycomponent.vue

导出默认值{
beforeCreate(){
const isLoggedIn=this.$store.getters[“user/isLoggedIn”];
log(“computed isLoggedIn”,this.isLoggedIn);
log(“isLoggedIn”,isLoggedIn);
},
计算:{
…映射获取程序([“user/isLoggedIn”]),
},
};
以下是浏览器控制台中的输出结果


在beforeCreate钩子中,存储区不可用。您可以将代码移动到mounted()钩子,但我建议将其放置在中间件中,以检查用户是否登录

中间件/auth-check.js


export default function ({ store }) {
  const isLoggedIn = store.getters["user/isLoggedIn"];
  // do something...
}
然后添加到您的页面:

export default {
  ...
  middleware: 'auth-check'
  ...
}

您能给我更多关于传递给auth-check.js的参数的信息吗?我想处理一个$router.push重定向是的,你可以从上下文中提取重定向并使用它。很高兴你解决了。

export default function ({ store }) {
  const isLoggedIn = store.getters["user/isLoggedIn"];
  // do something...
}
export default {
  ...
  middleware: 'auth-check'
  ...
}