Vuex针对复杂对象的最佳实践

时间:2017-04-24 19:13:30

标签: vuex

我的Vuex商店包含各种复杂性的对象。有些具有嵌套对象,有些具有嵌套对象数组。

我可以创建泛型函数来改变指定的属性:

setProperty(state,{ type, id, prop, value })
{
  state[type][id][prop] = value;
}

但对于嵌套对象,对象数组而言,这将很快变得复杂。为嵌套或其他任何对象属性创建变异似乎也非常繁琐。

创建用于修改对象,嵌套对象,数组等的突变有哪些最佳实践?

另一个相关问题是,将对象传递到突变中是不好的形式,而不是在状态中查找它们:

setProperty(state,{ obj, prop, value })
{
  obj[prop] = value;
}

1 个答案:

答案 0 :(得分:5)

一般来说,最好是在第一时间避免嵌套状态结构。我不确定你的数据是如何构造的,但如果你这样做是因为你在这些对象或对象区域之间存在关系,那么尝试规范状态形状可能是值得的。

这是Redux作者的好文章。它在谈论Redux,但核心概念对于Vuex来说是非常相似的。 https://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html

Vues ORM是一个自动为您执行此操作的库。