为什么状态对组件可见?

时间:2017-11-08 23:05:48

标签: vue.js vuex

据我所知,vuex的目的是通过仅通过突变/动作/ getter将其暴露给组件来保证状态的一致性。

但是,组件可以直接操作$ store.state而不使用突变/操作 - 可能会使状态不一致。

为什么直接暴露vuex状态?

1 个答案:

答案 0 :(得分:2)

使用mutation / actions / getters等是建议的最佳做法,但并不意味着被遵循。

可能你只是想从状态中读取一个值,在该状态下为它编写一个getter可能会有点过度杀死。

我个人总是尝试使用动作/ getter来保持一致,因为当你开始在没有集中式系统的情况下改变状态时,它会变得混乱。

一个例子是,如果你在该州有一个user模块。您可能很想仅仅需要用户名$store.state.user.username,但我总是希望通过getUser向用户展示,并通过user.username在组件上访问该用户。

能够直接访问该州的专业人士是一只手表:

watch: {
  '$store.state.user' (to, from) {
    console.log('I changed!')
  }
}

这可以让您知道用户状态何时发生变化,但如果您使用$this.$store.dispatch('setUser', myUser),则可以在操作中执行相同操作。

我认为这里的关键是一致的,选择一种方法并使用它,但始终建议遵循最佳实践。