Vuejs2 状态更改时,计算属性不会更新

Vuejs2 状态更改时,计算属性不会更新,vuejs2,vuex,Vuejs2,Vuex,我们正在尝试检测某人是否使用vuex存储状态登录:loggedIn。当我从操作中调用API服务时,它会在成功登录后调用变异,并更改状态中的数据: loginSuccess(state, accessToken) { state.accessToken = accessToken; state.authenticating = false; state.loggedIn = true; console.log(state.loggedIn); } consol

我们正在尝试检测某人是否使用
vuex
存储状态登录:
loggedIn
。当我从操作中调用API服务时,它会在成功登录后调用
变异
,并更改状态中的数据:

loginSuccess(state, accessToken) {
    state.accessToken = accessToken;
    state.authenticating = false;
    state.loggedIn = true;
    console.log(state.loggedIn);
  }
console.log()
显示该值,因此变异正在工作

在我的另一个组件中,我使用
…mapState()
使用计算属性监视存储中的更改,并在模板视图中绑定该属性:

computed: { 
    ...mapState('authStore',['loggedIn' ]);
  }
但是视图永远不会基于计算属性进行更新。我在控制台中使用Vue开发工具进行了检查。它显示状态的变化

我已初始化状态

export const states = {
  loggedIn: false
};
我试着直接给州政府打电话

this.$store.state.authStore.loggedIn;
我尝试过不同的方法

...mapState('authStore', { logging:'loggedIn' });
//or
...mapState('authStore',['loggedIn' ]);

另外,尝试了
watch:{}
hook,但不起作用

但是有趣的是,状态的
getter
总是显示
未定义的
,但是状态属性在开发工具中发生了变化。

无法找出问题所在或如何进一步行动

以下是成功登录后devtools
state
的屏幕截图:

这吸引了我的眼球:

导出常量状态={
洛格丁:错
};
我的怀疑是,你当时正试图这样使用它:

const存储={
各国,
突变,
行动,
吸气剂
}
这将不起作用,因为它需要被称为
状态
,而不是
状态
。结果将是
loggedIn
未激活,并且初始值为
undefined
。任何计算属性,包括存储的getter,在值更改时都不会刷新


无论我的理论是否正确,我建议添加
console.log(state.loggedIn)
loginsAccess
的开头,以确认突变前的状态。

这有帮助吗?另外,它的单数形式是
state
:vuex.vuejs.org/api/#state。非常感谢@Skirtle提供您的解决方案。我们为此坚持了两天:你的眼睛真锐利!谢谢你的回复。我自己也错过了。我注意到,
状态
应该是单数:。如果您使用的是SSR(比如Nuxt),那么您的状态也不会是一个返回object@PaulMelero我不知道你在说什么。我的回答已经解释了它是
状态
,而不是
状态
。至于SSR,这似乎与被问到的问题无关。你是对的。我在你的回答中没有看到。SSR部分可能对其他人有用。