想象一家这样的商店:
{
data: [ object1, object2, object3 ],
current: object2
}
store.current
应该指向当前编辑或选择的对象。我不是在复制 object2
,我只是指向与 data[2]
相同的对象。
我被告知要避免在 redux 商店中多次引用这样的内容,但没有得到解释。建议使用索引(例如
current: 2
),或者在更复杂的场景中,使用实际对象的路径(例如上面的 current: 'data.2'
)。
实际用例涉及树形数据结构,其中路径可能类似于
current: 'data.2.children.8.children.2.children.18'
,每次组件中需要当前选定的对象时都需要遍历。
在
store.current
中存储对此对象的引用是否安全,或者这样做是否存在相关的陷阱?
至于为什么这可能不是一个好主意:对对象的每次修改都需要新的副本 - 如果您在三个地方引用了某些内容,您不仅必须创建该副本,而且还必须将所有引用更新为现在指向那个副本。
您应该使用选择器函数,而不是复制数据(引用或不引用)或在组件中进行遍历。