Saya memiliki struktur data saat ini dalam status redux saya

const state = {
    chats: {
        id: "idhere",
        messages: [
            { 
               obj: "here" 
            },
            { 
               obj: "here" 
            },
        ]
    }
}

Saya ingin menambahkan pengembalian hasil dari tindakan saya yang dibuat ke akhir array pesan tanpa mengubahnya. Saya mengerti bagaimana saya akan mencapai ini jika array pesan adalah anak langsung dari negara tetapi karena bersarang itu benar-benar melemparkan saya.

Ini adalah bagaimana saya mendapatkannya saat ini tetapi saya menggunakan Push, dan itu tidak 'terasa' benar.

case GET_CHAT_MESSAGES:
    return { ...state, chats: { ...state.chats[action.id].messages: ...state.chats.[action.id].messages, action.payload }}

Terima kasih

0
juicy89 12 Maret 2019, 23:21

1 menjawab

Jawaban Terbaik

Inilah cara melakukannya dengan cara yang tidak dapat diubah:

const state = {
    chats : {
        id: "idhere",
        messages: [
            { 
               obj: "here" 
            },
            { 
               obj: "here" 
            },
        ]
    }
}

let newObj = {

   ...state,
   chats: {
     ...state.chats,
     messages:[...state.chats.messages, {obj:"new object"}]
   }

};

Jika Anda mendapatkan idenya, Anda dapat mengadaptasinya di peredam.

3
gmoniava 12 Maret 2019, 20:27