我使用Vuex已经有一段时间了,我一直在遵循这样的模式:组件使用Actions来提交Mutations以改变Store。我认为这是正确的方式,考虑到文档中的这个图表:
我遇到了一些代码,人们直接在组件中进行突变,甚至没有创建除了触发突变之外没有其他目的的简单操作。我甚至在Vuex文档中找到了几个这样的例子。
我想,既然它在文档中使用,这一定是一个可以接受的模式,我想知道跳过操作和直接触发突变是否是任何其他状态管理库(如Redux of Flux本身)认可的模式。
TLDR:直接在Vuex中进行变异是否可行,如果可行,Redux等其他状态管理库是否使用类似的模式?如果可行,为什么不使用?
2条答案
按热度按时间41zrol4v1#
请记住,变异必须是 * 同步的 *。如果你(和你的团队)确信没有出现异步的机会,你可以直接在组件中提交。换句话说,用简单直接的操作来使用它。
作为一项规则,只在操作中提交可以为应用程序代码增加一些清晰性和可靠性。
我没有使用Redux,但据我所知,一些状态管理器有中间件。使用突变和动作(Vuex-way)可能会导致维护大型应用程序的困难。
在未来的Vuex版本中,突变和动作应该是merged into the one entity。
yhxst69z2#
类似讨论:https://github.com/vuejs/vuex/issues/587
好主题来了!
操作用于更复杂的逻辑功能,特别是异步、
但另一方面突变是为了改变状态。
并且完全可以在组件内部进行修改!(最佳实践在大多数情况下都已经过时了)