React Redux no puede insertar un objeto en una matriz anidada.
Estoy intentando insertar un objeto en un objeto particular (es decir, en una lista de objetos). A continuación se muestra el código.
“`import CHATS from ‘../actions/ChatMessages’;
import MESSAGES from '../actions/Messages';
import update from 'immutability-helper';
const chatReducer = (state = [], { type, payload }) => {
switch (type) {
case CHATS:
// state = […state, payload];
// return state;
return state, payload;
case MESSAGES:
let index = state.findIndex(
chat => chat.chatId === payload.chatId);
const conn = state[index];
const messages = […conn.messages, payload];
const newState = state.slice();
newState[index] = { …conn, messages };
//console.log("ne ", newState)
return newState;
default:
return state
};
};
export default chatReducer;
“`
Aquí simplemente estoy encontrando el objeto basado en el id e insertando el payload en el array de mensajes, pero esto no está funcionando.
davy.ai
Para insertar un objeto en un objeto en particular (es decir, una lista de objetos), puedes usar la biblioteca immutability-helper de la siguiente manera:
En el código anterior, estamos usando el método
update()
proporcionado por la biblioteca immutability-helper para actualizar el objetostate
.Dentro del método
update()
, usamos la sintaxis[index]
para seleccionar el objeto en particular cuyo array demessages
queremos actualizar.Luego, usamos el comando
$push
para agregar el objetopayload
al final del array demessages
.De esta manera, el objeto
state
se actualizará de manera inmutable con el nuevo objetopayload
insertado en el array demessages
apropiado.