组件应该直接提交变更吗?
Should a component commit a mutation directly?
在 Mutations 章节中,您可以看到一个使用 mapMutations 将突变映射到组件方法的示例。
它还说
You can commit mutations in components with this.$store.commit('xxx')
那么问题来了,在 vuex 中直接从组件(而不是通过 action)提交 mutation 好吗?
如果是,则此图可能需要更新:
我应该继续使用 mapMutations 方法吗?
MapMuation
只是一个帮助程序,可让您使用定义的突变(在 mutation-types 中)作为组件的方法。它与 $store.commit
完全相同,但符号更简单。
我不知道你的图表在哪个上下文中,但可以从任何地方调用突变(组件、服务、动作、吸气剂等...)en 将通过同步更新商店来很好地完成它的工作。
据我了解,actions 主要用于可能包含多个 mutations 的异步操作。所以是的,直接使用突变是可以的,这就是它们的目的。只有当你有涉及多个突变的更复杂的工作流程时,你才应该将它们包装在一个动作中。
在 Mutations 章节中,您可以看到一个使用 mapMutations 将突变映射到组件方法的示例。
它还说
You can commit mutations in components with this.$store.commit('xxx')
那么问题来了,在 vuex 中直接从组件(而不是通过 action)提交 mutation 好吗?
如果是,则此图可能需要更新:
我应该继续使用 mapMutations 方法吗?
MapMuation
只是一个帮助程序,可让您使用定义的突变(在 mutation-types 中)作为组件的方法。它与 $store.commit
完全相同,但符号更简单。
我不知道你的图表在哪个上下文中,但可以从任何地方调用突变(组件、服务、动作、吸气剂等...)en 将通过同步更新商店来很好地完成它的工作。
据我了解,actions 主要用于可能包含多个 mutations 的异步操作。所以是的,直接使用突变是可以的,这就是它们的目的。只有当你有涉及多个突变的更复杂的工作流程时,你才应该将它们包装在一个动作中。