ngrx เชิงมุม: TypeError: ไม่สามารถตรึงมุมมองบัฟเฟอร์อาร์เรย์ด้วยองค์ประกอบได้

ฉันประสบปัญหากับ ngrx ฉันมีอาร์เรย์ในสถานะของฉันซึ่งฉันต้องการต่อท้ายวัตถุ สิ่งนี้ใช้งานได้ดีจริง ๆ ถ้าฉัน console.log พวกเขาสามารถเห็นค่านั้นในร้านค้าของฉัน แต่เครื่องมือ dev redux และคอนโซลทำให้เกิดข้อผิดพลาด TypeError: ไม่สามารถตรึงมุมมองบัฟเฟอร์อาร์เรย์ด้วยองค์ประกอบได้

ฉันมีสถานะที่มีลักษณะเช่นนี้:

const state: State = {
  array: []
};

วัตถุที่ฉันส่งไปยังการกระทำของฉันมีลักษณะคล้ายกับสิ่งนี้:

const obj = {attr: number, data: ImageData};

โดยที่ ImageData มาจาก Canvas และแยกด้วย canvas.getContext("2d").getImageData(...); ควรสังเกตว่าออบเจ็กต์นี้มีขนาดใหญ่โดยมีคีย์มากกว่า 69,000 คีย์ที่มีค่าตั้งแต่ 0 ถึง 255(RGBA)

และฉันผนวก Object ใหม่เข้ากับสถานะ / ร้านค้าดังนี้:

createReducer(
  initialState,
  on(action, (state: State, action)=> {
    return {
      ...state,
      array: [...state.array, action.payload]
    }
  })
);

นอกจากนี้ ฉันอ่านเจอว่าฉันควร deepCopy Objects ก่อนที่จะส่งต่อไปยังการดำเนินการ ดังนั้นฉันจึงทำเช่นนั้นกับ lodashs copyDeep() แต่ฉันได้ผลลัพธ์เดียวกัน

ความช่วยเหลือใด ๆ ที่ชื่นชม


person main.c    schedule 26.06.2020    source แหล่งที่มา
comment
เหตุผลเดียวที่คุณจะต้องทำการโคลนวัตถุแบบลึกก็คือว่าต้นฉบับจะกลายพันธุ์ด้วยวิธีใด ไม่อย่างนั้นมันก็ไร้จุดหมาย   -  person Adrian Brand    schedule 26.06.2020


คำตอบ (1)


คุณต้อง state.array ในตัวลดของคุณ

return {
  ...state,
  array: [...state.array, action.payload]
}
person Adrian Brand    schedule 26.06.2020
comment
ขอบคุณสำหรับความพยายามของคุณ แต่ฉันมีสิ่งนี้อยู่แล้วในรหัสของฉัน ฉันเพิ่งทำผิดในคำถาม ฉันเสียใจ - person main.c; 26.06.2020