我的Vuex商店包含各种复杂性的对象。有些具有嵌套对象,有些具有嵌套对象数组。
我可以创建泛型函数来改变指定的属性:
setProperty(state,{ type, id, prop, value })
{
state[type][id][prop] = value;
}
但对于嵌套对象,对象数组而言,这将很快变得复杂。为嵌套或其他任何对象属性创建变异似乎也非常繁琐。
创建用于修改对象,嵌套对象,数组等的突变有哪些最佳实践?
另一个相关问题是,将对象传递到突变中是不好的形式,而不是在状态中查找它们:
setProperty(state,{ obj, prop, value })
{
obj[prop] = value;
}
答案 0 :(得分:5)
一般来说,最好是在第一时间避免嵌套状态结构。我不确定你的数据是如何构造的,但如果你这样做是因为你在这些对象或对象区域之间存在关系,那么尝试规范状态形状可能是值得的。
这是Redux作者的好文章。它在谈论Redux,但核心概念对于Vuex来说是非常相似的。 https://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html
Vues ORM是一个自动为您执行此操作的库。