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

168
Vistas
¿Cómo puedo vincular ciertas acciones entre 2 tiendas Redux?

Tengo una situación en la que deseo "vincular" una parte de 2 tiendas Redux juntas (sé que esto es inusual), pero no puedo encontrar la forma de filtrar las acciones de manera adecuada.

Tengo un componente reutilizable, que tiene muchos estados complejos dentro y, por lo tanto, tiene una tienda Redux para administrar esto. Como esto está dentro de una biblioteca, en lugar de una aplicación, no puedo usar la regla anterior de "fuente única de la verdad", ya que rompería el modelo de encapsulación.

ingrese la descripción de la imagen aquí

La forma en que configuro mi tienda es la siguiente, que divide correctamente partes de la tienda.

 const createStore = () => { const reducer = combineReducers({ a: aReducer, b: bReducer, c: cReducer, }); const composeEnhancers = composeWithDevTools({}); const store = create(reducer, composeEnhancers(applyMiddleware(ReduxThunk))); return store; };

Luego tengo un montón de acciones, por ejemplo, aquí hay una que opera en la parte a de la tienda y en la parte b de la tienda:

 const foo = (payload) => ({ type: "A.FOO", payload, }); const bar = (payload) => ({ type: "B.BAR", payload, });

Esencialmente, deseo vincular dos instancias de tienda, de modo que cualquier operación que ocurra en a store1 , también ocurra en store2 . Tengo una lista de type conocidos que están disponibles, pero no estoy seguro de cómo accedo a ellos.

Puedo hacer esto de una manera primitiva que copia TODAS las operaciones:

 const [store1, setStore1] = useState(); const [store2, setStore2] = useState(); useEffect(() => { if (store1 && store2) { const store1_dispatch = store1.dispatch; const store2_dispatch = store2.dispatch; const dispatch = (...args) => { store1_dispatch(...args); store2_dispatch(...args); }; store1.dispatch = dispatch; store2.dispatch = dispatch; } }, [store1, store2]); return ( <> <ComponentA onStoreCreated={setStore1} /> <ComponentB onStoreCreated={setStore2} /> </> );

Pero esto rompe varias cosas. ¿Alguien puede ver una forma en que pueda lograr esto simplemente copiando todas las acciones que operan en a o tienen un tipo de acción que comienza con A.* ?

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