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

200
Views
Cómo establecer dinámicamente la variable de estado inicial en redux

Estoy tratando de establecer el estado inicial de un estado redux basado en un parámetro de elemento de objeto directamente dentro del estado de la saga redux. Tiene que estar en este archivo (larga historia), así que decido ponerlo en este archivo. Entonces, mi primer pensamiento es escribir una función en el archivo redux para hacer el trabajo. Sin embargo, no estoy seguro de cómo acceder al estado que necesitaré desde otro archivo redux. Investigué y vi que puede usar la siguiente sintaxis para hacerlo en funciones de generador

 const state = yield select();

Así que probé esto en una función javascript de vainilla y, como se esperaba, no funcionó. ¿Hay alguna manera de que pueda hacer lo siguiente?

 const initialState = { currentAccountId: fetchAndReturnId(), currentName: '', }; function fetchAndReturnId() { const state = yield select(); const { accounts } = state.global.accounts; const charityAccount = accounts.find(acc => acc.type === 'charity'); return charityAccount.id; }

Solo me preguntaba si alguien más tenía alguna otra solución. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes hacer una función para ello.

Aquí hay un ejemplo para ti:

 const initial = async () => { const id = await getId(); const name = await getName(); return { currentAccountId: id, currentName: name, }; };
about 4 years ago · Juan Pablo Isaza Report

0

A menos que haga cosas avanzadas como inyectar reductores, lo que está tratando de hacer realmente no tiene sentido para mí. El estado inicial se llama "inicial" porque se establece ANTES de cualquier otra cosa relacionada con redux, incluida la configuración de cualquier estado o la ejecución de cualquier saga. Por lo general, no puede configurar initalState en función de otro estado redux, porque no hay otro estado en ese momento.

Dicho esto, hay algunas otras cosas que puedes hacer. Si necesita establecer el mismo estado inicial para varios reductores, puede extraerlo a alguna constante y luego usarlo en ambos lugares.

 const INITIAL_DATA = 'foo'; const reducer1 = (state = INITIAL_DATA, action) => ... const reducer2 = (state = INITIAL_DATA, action) => ...

Si es algo dinámico, como datos obtenidos de BE, probablemente no sea un estado inicial, sino algo que establecería mediante acciones de reducción más adelante en el ciclo de vida de la aplicación.

 const reducer = (state = null, action) => { if (action.type === 'FETCHED_DATA') return action.data return state } function * saga() { const data = yield fetchData(); yield put({type: 'FETCHED_DATA', data}); }

O si tiene otra saga, que necesita leer el estado redux existente y luego enviarlo al reductor que maneja una parte diferente del estado redux, puede usar el efecto de select .

 function * saga() { const data = yield select(getDataFromStateSlice1); yield put({type: 'STORE_DATA_IN_STATE_SLICE_2', data}); }

De todos modos, dado que lo que está tratando de hacer no tiene sentido para mí, probablemente me esté perdiendo algo en su pregunta, siéntase libre de dar más detalles.

about 4 years ago · Juan Pablo Isaza 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!