getters: { getUserId() { return this.managerInfo.user ? this.managerInfo.user.id : 0 }, getUser() { return this.managerInfo.user || {} }, getBearerToken() { return this.managerInfo.token ? 'Bearer ' + this.managerInfo.token : '' }, getToken() { return this.managerInfo.token || "" }, getMenus() { return this.managerInfo.menus || [] }, getAuths() { return this.managerInfo.auths.length ? this.managerInfo.auths.map(v => v.auth) : [] } },
时间: 2024-02-14 11:03:03 浏览: 86
这段代码是 Vuex 中的一个模块的 getters 对象,里面定义了一些基于全局状态的计算属性,可以在组件中通过 `mapGetters` 辅助函数来将这些计算属性映射到组件的计算属性中。
具体来说,该 getters 对象中定义了以下计算属性:
- `getUserId`:获取当前登录用户的 ID,如果用户未登录则返回 0。
- `getUser`:获取当前登录用户的信息,如果用户未登录则返回空对象 `{}`。
- `getBearerToken`:获取当前登录用户的 token,并加上 `Bearer` 前缀,如果用户未登录则返回空字符串 `""`。
- `getToken`:获取当前登录用户的 token,如果用户未登录则返回空字符串 `""`。
- `getMenus`:获取当前登录用户的菜单列表,如果用户未登录则返回空数组 `[]`。
- `getAuths`:获取当前登录用户的权限列表,如果用户未登录或者权限列表为空则返回空数组 `[]`。对于权限列表中的每一个对象,取出其中的 `auth` 属性构成新的数组返回。
相关问题
vuex无法获取getters属性this.$store.getters.getCurChildId undefined
可能出现这种情况的原因是,您在获取getters属性时使用了错误的语法。正确的语法应该是 this.$store.getters.getCurChildId(),即需要在属性名后面加上一对括号。
如果仍然无法获取该属性,可能是因为您还没有在store中定义该getter,您需要在store中的getters对象中定义一个名为getCurChildId的getter,如下所示:
```
const store = new Vuex.Store({
state: {
// ...
},
getters: {
getCurChildId: state => {
// ...
}
}
})
```
请确保您的getter函数返回一个值,这样才能在组件中正确地使用该getter属性。如果仍然无法解决问题,请检查您的代码是否有其他错误。
this.$store.getters取不到值
当你在Vue.js应用中尝试通过`this.$store.getters`访问Vuex store中的getter,却发现无法获取到预期的值时,这可能是以下几个原因导致的:
1. **未设置**:首先确认你在Vuex store中已经定义了对应的getter函数,并且在状态(state)更新之后调用了`commit()`或`dispatch()`。
```javascript
// store.js
export default new Vuex.Store({
getters: {
user: state => state.user,
},
});
```
2. **路径错误**:检查getter的引用是否正确,包括路径和命名。确保你在代码中使用的getter名称与store中的定义一致。
3. **模块化store**:如果你使用了模块化结构(modules),确保在正确的模块下访问getter。例如:
```javascript
// getters.js (在 modules/auth/module.js)
export default {
isLoggedIn: state => state.isLoggedIn,
};
```
然后在组件里这样引用:`this.$store.getters['auth/isLoggedIn']`
4. **在实例化前使用**:确保在组件生命周期钩子如`mounted()`或`created()`中加载数据,因为`this.$store`是在组件挂载后初始化的。
5. **异步问题**:如果getter依赖于异步操作(比如数据库查询),在读取之前可能还未完成。在这种情况下,你需要处理好异步流程,例如使用`mapGetters`辅助函数。
6. **全局注册错误**:在main.js中是否正确地全局注册了store?
修复上述问题之一通常可以解决`this.$store.getters`取不到值的问题。如果你仍然遇到问题,提供更多的上下文信息将有助于诊断。
阅读全文