vuejs2 - Nuxt 商店 mapGetters 属性在 beforeCreate() 钩子上未定义
问题描述
我在使用 vuex 的 nuxt 应用程序中遇到错误。我正在尝试使用 mapGetters 助手访问存储获取器,但是当我在 beforeCreate() 中访问该属性时,挂钩值未定义。
商店/user.js
import VuexPersistence from "vuex-persist";
export const plugins = [VuexPersistence];
export const state = () => ({
user: null,
});
export const getters = {
isLoggedIn(state) {
if (state && state.user) {
console.log("state.user", state.user);
}
return state.user !== null && state.user !== {};
},
};
我的组件.vue
export default {
beforeCreate() {
const isLoggedIn = this.$store.getters["user/isLoggedIn"];
console.log("computed isLoggedIn", this.isLoggedIn);
console.log("isLoggedIn", isLoggedIn);
},
computed: {
...mapGetters(["user/isLoggedIn"]),
},
};
</script>
这是浏览器控制台中的输出结果
解决方案
该商店在 beforeCreate 挂钩中不可用。您可以将代码移动到mounted() 挂钩,但我建议将其放在中间件中以检查用户是否已登录。
中间件/auth-check.js
export default function ({ store }) {
const isLoggedIn = store.getters["user/isLoggedIn"];
// do something...
}
然后添加到您的页面:
export default {
...
middleware: 'auth-check'
...
}
推荐阅读
- c - C程序读取文件并打印数组中提到的所有行
- c# - 在同一节点上构建过滤器
- python - Using Python Regex to textually analyze meeting minutes: "who said what"
- sqlite - 如何在 React Native SQLite 上捕获错误
- javascript - JavaScript 错误仅在 Firefox jQuery.Deferred 异常:变量名未定义
- django - 使用 RetrieveUpdateAPIView 更新数据 - 从序列化程序获取经过验证的数据
- ruby-on-rails - 当执行引发错误时,活动作业是否调用 after_perform?
- sql - 根据多个条件更新单个列中的多个值
- node.js - 附加到角色的 IAM 策略不起作用
- c# - Json对象的动态/解析