在 Vuex 中不使用操作就提交突变是否很糟糕?

Posted

技术标签:

【中文标题】在 Vuex 中不使用操作就提交突变是否很糟糕?【英文标题】:Is it bad to commit mutations without using actions in Vuex?在 Vuex 中不使用操作就提交突变是不是很糟糕? 【发布时间】:2018-09-14 15:53:03 【问题描述】:

我使用 Vuex 已经有一段时间了,我一直遵循的模式是:组件使用 Actions 来提交 Mutations 来改变 Store。考虑到文档中的这张图表,我认为这是做事的正确方法:

我遇到了人们直接在组件中提交突变的代码,甚至没有创建除了触发突变之外没有其他目的的简单操作。我什至在 Vuex 文档中找到了几个这样的例子。

我想,既然它在文档中使用,这一定是一种可接受的模式,我想知道跳过 Actions 并直接触发 Mutations 是否是任何其他状态管理库(例如 Flux 本身的 Redux)认可的模式。

TLDR:直接在 Vuex 中提交变更是否可以,如果可以,其他状态管理库如 Redux 是否使用这样的模式?如果是这样,他们为什么不呢?

【问题讨论】:

【参考方案1】:

请记住,突变必须是同步的。如果您(和您的团队)确定没有机会出现异步内容,您可以直接在组件中提交。换句话说,就是通过简单直接的操作来使用它。

通常只在操作中提交可以为应用程序的代码增加一些清晰度和可靠性。

我没用过 Redux,但据我所知,有些状态管理器有中间件。 使用突变和动作(Vuex 方式)可能会导致对大型应用程序的维护困难。

在未来的 Vuex 版本中,mutations 和 actions 应该是merged into the one entity。

【讨论】:

以上是关于在 Vuex 中不使用操作就提交突变是否很糟糕?的主要内容,如果未能解决你的问题,请参考以下文章

Vuex 突变似乎没有在加载时更新状态

突变未提交状态 vuex - Nuxt

组件是不是应该直接提交突变?

Vue,错误 [vuex] 不会在突变处理程序之外改变 vuex 存储状态

在这个数据库中不使用规范化表是否很糟糕?

VueX 等待突变执行