1 回答
TA贡献1827条经验 获得超9个赞
问题是您指的是segments列表中的每个对象都是同一个对象。
因此,更改 的值segments[id]将更新defaultSegmentData,导致对的每个引用defaultSegmentData也发生变化。
const emptySegments = timeframeMetadata.reduce((segmentMap, metadata) => {
segmentMap[metadata.timeframeId] = {
metadata,
segments: defaultSegmentData, // Everything goes wrong here.
};
return segmentMap;
}, {});
此问题的一个简单解决方案是避免在创建时使用对对象的相同引用segmentMap:
const emptySegments = timeframeMetadata.reduce((segmentMap, metadata) => {
segmentMap[metadata.timeframeId] = {
metadata,
/** Or whatever default value you want.
* Just make sure to create a new instance of it for each call.
*/
segments: {},
};
return segmentMap;
}, {});
添加回答
举报