ฉันใช้ Redux ในตัวลดของฉันฉันกำลังพยายามลบคุณสมบัติออกจากวัตถุเช่นนี้:
const state = {
a: '1',
b: '2',
c: {
x: '42',
y: '43'
},
}
และฉันต้องการมีบางอย่างเช่นนี้โดยไม่ต้องเปลี่ยนสถานะเดิม:
const newState = {
a: '1',
b: '2',
c: {
x: '42',
},
}
ฉันเหนื่อย:
let newState = Object.assign({}, state);
delete newState.c.y
แต่ด้วยเหตุผลบางอย่างมันจะลบคุณสมบัติจากทั้งสองรัฐ
ช่วยฉันทำอย่างนั้นได้ไหม
Object.assign
สร้างเพียงสำเนาตื้นของstate
และดังนั้นจึงstate.c
และnewState.c
จะชี้ไปยังวัตถุที่ใช้ร่วมกันเดียวกัน คุณพยายามที่จะลบคุณสมบัติy
จากวัตถุที่ใช้ร่วมกันและไม่ได้มาจากวัตถุใหม่c
newState