组件是不是应该直接提交突变?
Posted
技术标签:
【中文标题】组件是不是应该直接提交突变?【英文标题】:Should a component commit a mutation directly?组件是否应该直接提交突变? 【发布时间】:2018-09-14 23:23:39 【问题描述】:在Mutations 章节中,您可以看到一个使用 mapMutations 将突变映射到组件方法的示例。
它也说
您可以使用 this.$store.commit('xxx') 在组件中提交变更
那么问题来了,在 vuex 中直接从一个组件(而不是通过一个动作)提交一个突变好吗?
如果是,那么此图可能需要更新:
我应该继续使用 mapMutations 方法吗?
【问题讨论】:
Is it bad to commit mutations without using actions in Vuex?的可能重复 【参考方案1】:MapMuation
只是一个帮助器,可让您使用定义的突变(在突变类型中)作为组件的方法。它与$store.commit
完全相同,但符号更简单。
我不知道您的图表在哪个上下文中,但是可以从任何地方(组件、服务、操作、getter 等)调用突变,然后通过同步更新存储来很好地完成它的工作。
【讨论】:
【参考方案2】:据我了解,actions 主要用于可能包含多个mutations 的异步操作。所以是的,直接使用突变是可以的,这就是它们的用途。只有当您有涉及多个突变的更复杂的工作流程时,您才应该将它们包装在一个操作中。
【讨论】:
以上是关于组件是不是应该直接提交突变?的主要内容,如果未能解决你的问题,请参考以下文章
GCP Datastore Python - InvalidArgument:400 非事务性提交可能不包含影响同一实体的多个突变