Ngrx sudut: TypeError: Tidak dapat membekukan tampilan buffer array dengan elemen

Saya mengalami masalah dengan ngrx. Saya memiliki array di negara bagian saya yang ingin saya tambahkan objek. Ini sebenarnya berfungsi dengan baik jika saya konsol.log mereka, saya dapat melihat nilai-nilai itu di toko saya. Tetapi alat pengembang redux dan konsol memunculkan kesalahan TypeError: Tidak dapat membekukan tampilan buffer array dengan elemen.

Saya memiliki keadaan yang terlihat seperti ini:

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

Objek yang saya berikan ke tindakan saya terlihat mirip dengan ini:

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

Dimana ImageData berasal dari Canvas dan diekstrak dengan canvas.getContext("2d").getImageData(...);. Perlu dicatat bahwa Objek ini sangat besar dengan lebih dari 69000 kunci dengan nilai dari 0 hingga 255 (RGBA).

Dan saya menambahkan Objek baru ke negara bagian/toko seperti ini:

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

Selanjutnya saya membaca bahwa saya harus menyalin objek secara mendalam sebelum meneruskannya ke tindakan jadi saya melakukannya dengan lodashs copyDeep(), tetapi saya mendapatkan hasil yang sama.

Bantuan apa pun dihargai.


person main.c    schedule 26.06.2020    source sumber
comment
Satu-satunya alasan Anda perlu mengkloning suatu objek secara mendalam adalah jika objek aslinya akan bermutasi dengan cara tertentu. Kalau tidak, itu tidak ada gunanya.   -  person Adrian Brand    schedule 26.06.2020


Jawaban (1)


Anda memerlukan state.array di peredam Anda.

return {
  ...state,
  array: [...state.array, action.payload]
}
person Adrian Brand    schedule 26.06.2020
comment
Terima kasih atas usaha Anda, tetapi saya sudah memilikinya di Kode saya, saya hanya salah menjawab pertanyaan. Saya minta maaf - person main.c; 26.06.2020