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.

¿Cómo actualizar el estado con un array a través de un reductor NGRX en Angular?

Quiero actualizar mi estado utilizando un reductor de ngrx, pero estoy obteniendo un error de compilación.

Para obtener contexto. El usuario envía un registro de trabajo en un formulario, y quiero que este registro de trabajo se agregue al arreglo de registros de trabajo en el estado.

Aquí está la estructura de mi estado:

export declare interface Outreach {
  outreach: CaseState|null;
}
export declare interface CaseState {
  outreachCaseId: string;
  worklogs: WorklogCase[];  // <- Quiero agregar el nuevo registro de trabajo aquí
}
export declare interface WorklogCase {
  worklogId: string;
  username: string;
  details: string;
}

El reductor:

const initialState: OutreachState = {
  outreach: null,
}

export const outreachDetailsReducers = createReducer<outreachstate>(
    initialState,
    on(outreachActions.addWoklogSuccess,
    state, {worklog}) => ({...state, worklogs: [...worklog]})),

Creo que tengo mal la sintaxis de alguna manera en la última línea del reductor. ¿Alguna ayuda?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un error de sintaxis menor en la última línea del reductor.

    En lugar de:

    state, {worklog}) => ({...state, worklogs: [...worklog]})
    

    debería ser:

    (state, {worklog}) => ({...state, worklogs: [...state.worklogs, worklog]})
    

    Esta sintaxis agrega el nuevo registro de trabajo al arreglo worklogs en el estado, en lugar de simplemente reemplazarlo con un nuevo arreglo como lo hacía la sintaxis anterior.

    Entonces, el reductor actualizado debería ser:

    export const outreachDetailsReducers = createReducer<outreachstate>(
      initialState,
      on(outreachActions.addWoklogSuccess,
        (state, {worklog}) => ({...state, worklogs: [...state.worklogs, worklog]})
      )
    );
    

    Con este cambio, el error de compilación debería resolverse y el nuevo registro de trabajo debería agregarse al arreglo worklogs en el estado cuando se despache la acción addWoklogSuccess.

Comments are closed.