为什么吸气剂和突变体会接受状态,而动作会接受上下文作为第一个参数,又有什么区别,请记住上下文包含状态的所有属性?
答案 0 :(得分:1)
正如@Phil所说-这只是设计使然。这个设计有一个合理的解释:
动作是为突变准备尽可能多的数据的地方(数据可以是输入数据或仅是当前状态),这意味着发出http请求,基于吸气剂/状态转换数据等(动作也总是返回Promise )
更改只是更改状态的原子操作(可以只是一行-属性分配及其确定!)。
而且,吸气剂只是基于某些状态属性获得价值的帮助者。
您可以看到Vuex商店中的每个部分都负责“特定工作”。 只需读取并返回一些值,获取器就不应更改状态(当然也不应调用操作),因此,获取器只能访问状态和其他获取器。突变应该改变状态,所以突变当然只能访问状态和某些输入数据。动作需要整个商店的上下文(状态,获取器,突变,其他动作),以使开发人员可以对数据进行任何操作并进行最终突变。
如果每个部分都可以访问上下文,那么在您的代码中将很混乱。
如果您遇到需要在变异中使用吸气剂的问题-只需定义新操作即可。 如果要在getter中更改状态-定义了新操作。
还要记住,您不应该直接更改状态属性-始终为此使用变异。