我有一个简单的商店:
UsersStore.js
state() {
return {
users: {
name: '',
userHasPermissions: false,
}
}
}
我试图使用mapState
在我的组件中访问状态。当我像下面这样导入存储的整个User
对象时,它工作了:
App.vue
computed: {
...mapState('users', {
myUser: 'user'
}
但我只是想导入userHasPermissions
状态,但当我做以下操作时,它似乎不起作用:
App.vue
computed: {
...mapState('users', {
hasPerms: 'user.hasPermissions'
}
您可以使用vuexgetters
从任何存储对象获取特定属性
state() {
return {
users: {
name: '',
userHasPermissions: false,
}
}
},
getters: {
userHasPermission(state) {
return state.users.userHasPermission || false;
}
}
现在您可以使用mapGetters
将存储getter映射到您的vue组件
computed: {
...mapGetters({
hasPerms: "userHasPermission"
})
}
如果你想避免使用mapGetters
和getters
而使用mapState
,那么你需要在mapState
中定义一个计算函数来获取所需的属性
computed: {
...mapState({
hasPerms: (state) => state.users.userHasPermission
})
}