es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Necesito reemplazar la lista en react redux.

Estoy intentando configurar las propiedades de userDetails, pero ese bloque de código no está funcionando.

import CHATS from '../actions/ChatMessages';
import MESSAGES from '../actions/Messages';
import SEARCH from '../actions/SearchUser';

const chatReducer = (state = {}, { type, payload }) => {
    switch (type) {
        case CHATS:
            return { ...state, ...payload };
        case SEARCH:
            return {
                ...state,
                userDetails: [...payload.userDetails]
            };
        case MESSAGES:
            let index = state.chats.findIndex(
                chat => chat.chatId === payload.chatId
            );
            if (index !== -1) {
                let conn = state.chats[index];
                const msg = payload.msg;
                conn.lastMsg = msg;
                const messages = [...conn.messages, payload];
                const newState = { ...state };
                newState.chats[index] = { ...conn, messages };
                console.log("state ", newState);
                return newState;
            }
            return state;
        default:
            return state
    };
};

export default chatReducer;

El campo userDetails no está reemplazando el valor. ¿Hay algo incorrecto con el objeto state?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según el fragmento de código proporcionado, no parece haber nada mal con el objeto state en sí mismo. Sin embargo, podría haber un problema con la carga útil que se está pasando en la acción SEARCH.

    El código está utilizando el operador de propagación para copiar el objeto de estado actual, y luego modificando la propiedad userDetails reemplazándola con un nuevo array de detalles de usuario que se pasan en la carga útil. Esto debería funcionar como se espera siempre y cuando la carga útil esté en el formato correcto.

    Una posible razón por la cual el código no funciona podría ser debido al creador de acciones que está despachando la acción SEARCH. Es posible que no esté pasando el formato correcto de datos en la carga útil. Es difícil estar seguro sin ver el creador de acciones y cómo se está utilizando en el componente.

    Otra posible razón podría ser que el componente no se esté volviendo a representar correctamente para reflejar el estado actualizado. Esto podría ser causado al no utilizar correctamente el estado de React o setState, o no pasar el estado actualizado como propiedades a los componentes secundarios.

    Para diagnosticar aún más el problema, se recomienda usar el depurador y console.log para ver qué valor se está pasando en la carga útil y cómo se está actualizando el objeto state.

Comments are closed.