1 回答

TA貢獻1827條經驗 獲得超9個贊
問題是您指的是segments列表中的每個對象都是同一個對象。
因此,更改 的值segments[id]將更新defaultSegmentData,導致對的每個引用defaultSegmentData也發(fā)生變化。
const emptySegments = timeframeMetadata.reduce((segmentMap, metadata) => {
segmentMap[metadata.timeframeId] = {
metadata,
segments: defaultSegmentData, // Everything goes wrong here.
};
return segmentMap;
}, {});
此問題的一個簡單解決方案是避免在創(chuàng)建時使用對對象的相同引用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;
}, {});
添加回答
舉報