以下简单的共享存储无法提供Vuex可以执行的操作吗? -
let store = {
user: {
name: 'John Doe'
}
};
new Vue({
el: '#app-one',
data: {
bar: 'foo',
shared: store
}
});
new Vue({
el: '#app-two',
data: {
foo: 'bar',
shared: store
}
});
如果是这样,那些常见用例是什么?
答案 0 :(得分:4)
在内心深处,Vuex商店只是你正在添加的Vue反应对象。
因此,如果您只通过直接访问使用Vuex商店的state
,那么这两种方法的工作方式相同。
问题是,如果在Vuex中,您只是直接使用state
,那么您几乎没有使用该工具。你付出的代价,却没有收获的好处。
Vuex有吸气剂,就像可重复使用的计算属性一样。它们还允许您将应用程序与商店状态的内部结构分离。
Vuex具有模块/命名空间,允许您细分商店代码并在增长时更好地组织它。
Vuex也有行动和突变。动作允许您创建"方法"可由任何使用该存储的Vue实例(或组件)重用。另一个重要的事情是行动和突变强制执行一个"协议"这也将有助于您更好地组织代码,最重要的是:当问题变得麻烦时,将更容易帮助您调试您的代码(如果您的应用程序增长足够,它们将会更好)。
举一个例子,考虑一个应用程序,应用程序的许多点改变相同的状态位。还要考虑其中一些更改是异步完成的。使用Vuex,您知道在操作中正在执行任何异步操作,因此如果您有任何"竞赛"问题,问题的根源必须在那里。在Vuex中,您还知道,最终,状态的变化是在 (并且同步)的突变中进行的。因此,如果事情变得疯狂,你总是可以在该突变处设置一个断点,并找出它正在调用它的内容。如果您不使用Vuex,在任何相当大的应用程序中,更改将来自太多地方的太多费率,使您的生活毕竟不那么容易。