Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda