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.

Ngrx cómo deshacerse del tipo en el selector

En una clase de efecto tengo este código:

withLatestFrom(this.store.pipe(select(selectSettings))),
tap(([action, settings]) => {
  console.log('settings', settings);
  /* 
   imprime {lang:'en',theme:'dark', type: "[Settings Page] Change Language}"}
   en lugar de simplemente {lang:'en',theme:'dark'}
 */ 
  this.localStorageService.setItem(SETTINGS_KEY, settings);
}

Me gustaría saber, por favor, cómo deshacerme de esto
y por qué hay esta propiedad adicional, gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para eliminar la propiedad adicional en el registro de la consola, puedes modificar el selector “selectSettings” para seleccionar solo las propiedades necesarias del almacenamiento. Actualmente, parece que “selectSettings” devuelve un objeto con la propiedad “type” agregada, por eso aparece en el registro de la consola.

    Por ejemplo, si solo necesitas las propiedades “lang” y “theme”, puedes actualizar tu selector de la siguiente manera:

    export const selectSettings = createSelector(
      selectSettingsState,
      (state) => ({ lang: state.lang, theme: state.theme })
    );
    

    Esto devolverá un objeto solo con las propiedades “lang” y “theme”, sin la propiedad “type”.

    En cuanto a por qué existe la propiedad “type”, es probable que sea agregada por la acción que desencadenó el efecto. Los tipos de acción suelen definirse como constantes de cadenas para hacerlos únicos y fáciles de referenciar en toda la aplicación. En este caso, la propiedad “type” se está utilizando para identificar la acción específica que desencadenó el efecto (“[Página de configuración] Cambiar idioma”).

Comments are closed.