Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

114
Views
Usando ngrx para obtener el estado actual de la tienda una vez

Hola, me preguntaba si alguien sabe cómo obtener el estado actual de una tienda una vez sin tener que suscribirse. Actualmente estoy usando ngrx para suscribirme a la tienda y acceder a su estado para establecer el atributo de un componente, pero como estoy suscrito, este atributo se actualiza constantemente. Así que estoy buscando una manera de obtener este atributo solo una vez para poder mostrar los datos sin que se actualicen constantemente.

Por si acaso, esto sucede dentro del constructor de mi componente.

He estado intentando algo como esto:

_store.select('storeData.correlationData');

Al suscribirme accedería así:

 _store.subscribe( (state) => { this.correlationData = state.storeData.correlationData; } );

EDITAR

Estado de aplicación:

 export interface ApplicationState { uiState: UiState; storeData: StoreData; }
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede crear la función getState() , colocarla en un módulo compartido e importarla donde sea necesario. La clave es hacerlo sincrónico usando el operador take(1) :

 export function getState(store: any, selector: string) { let _state: any; store.take(1).subscribe(o => _state = o); return _state; }

Aquí hay una versión más avanzada que estoy usando:

 export function getState(store: any, selector?: any) { let _state: any; let state$: any; if (typeof selector === 'string' && /\./g.test(selector)) { state$ = store.pluck(...selector.split('.')); } else if (typeof selector === 'string') { state$ = store.map(state => state[selector]); } else if (typeof selector === 'function') { state$ = store.map(state => selector(state)); } else { state$ = store; } state$.take(1) .subscribe(o => _state = o); return _state; }

Con esto, puede obtener el estado de diferentes maneras:

 getState(this.store) // all data in Store getState(this.store, 'users') getState(this.store, state => state.users) getState(this.store, 'users.address.street') // Cool!

¡Usar con precaución!

Como señaló @Maximes en los comentarios, debe intentar usar Observables directamente en su código y usar este método para probar .

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!