Soy realmente nuevo en React y necesito preguntar. ¿Puedo tener una tienda ReactJs Redux en una biblioteca y luego usar esa biblioteca en una aplicación que también tiene una tienda Redux?
Ambos hacen esto:
<Provider store={store}> ..App </Provider>Aprendo ReactJs y no estoy seguro de entender cómo se construye cómo Webpack está cargando el código aquí.
He probado hacer algo de esto pero no puedo hacer que funcione. Es como Redux después de cargar por primera vez la tienda Redux de la biblioteca, luego no puede cargar la tienda de aplicaciones, pero soy un novato, así que debo preguntar.
¿Colisionarán estas dos React Stores? / ¿Pueden existir de forma independiente?
Dos tiendas diferentes creadas con createStore no colisionarán y pueden existir de forma independiente.
Detrás de escena, cada instancia de tienda tiene un método de suscripción y su propia matriz de suscriptores.
Cuando usa el componente Provider de react-redux, está enviando una instancia de la tienda al árbol de componentes con la API de contexto de React. La instancia estará disponible para todos los hijos y descendientes del componente que prestó el Proveedor. Si hay otro proveedor en el camino, el valor de ese proveedor anulará al proveedor superior.
Por lo tanto, si usa otro proveedor con otra instancia de una tienda en su biblioteca, tendrá efecto solo para el árbol de componentes que comienza desde su componente de biblioteca. Con la composición correcta, no habrá colisión.
¿Pueden compartir Reductores?
Los reductores no son más que funciones puras, lo que significa que no deberían tener efectos secundarios. Por lo tanto, puede exportar y reutilizar la misma lógica reductora si lo desea, solo deberá registrarlos con cada instancia de la tienda.
Por último, no estoy de acuerdo con otras respuestas aquí que afirman que no debe usar varias tiendas. Tiene el caso de uso exacto en el que se justificaría una tienda separada, donde tiene su aplicación principal usando una tienda y tiene una biblioteca independiente que usa otro estado global no relacionado.
En mi opinión, todo es posible en el mundo de la programación, definitivamente, tener una multitienda también es posible.
Hiciste varias preguntas, en primer lugar, te las respondo y luego te explico un poco más.
¿Puedo tener una tienda Reactjs Redux en una biblioteca y luego usar esa biblioteca en una aplicación que también tiene una tienda Redux?
Redux sea fácil de usar es Redux Toolkit , que tiene un flujo muy fácil de usar e implementar en su aplicación, incluso tiene una plantilla CRA en la que puede crear su aplicación (configuración cero) basada en redux npx create-react-app [my-app-name] --template redux o redux-typescript npx create-react-app my-app --template redux-typescript . funciona correctamente.¿Colisionarán estas dos React Stores? ¿Pueden existir de forma independiente?
Provider y debe envolver parte de su aplicación o la totalidad usando ese <Provider store={store}> , entonces si desea tener dos tiendas, puede agregar dos Provider y no colisionarán. pero, al conectarse y obtener algunos datos de las tiendas, debe prestar atención al proveedor desde el que va a llamar. por lo que podrán existir de forma independiente. <ReduxOneProvider store={storeOne}> <ReduxTwoProvider store={storeTwo}> <MobxProvider store={mobXStore}> <App> </MobxProvider> </ReduxTWoProvider> </ReduxOneProvider>Pero, totalmente, no soy fanático de tener varias tiendas, para obtener más información, lea aquí .
¿Pueden compartir Reductores? (Digamos que la aplicación quiere usar la biblioteca de la tienda Redux y enviarle un envío)
combine , por lo que la respuesta es sí, pero tenga en cuenta la función de connect que proviene de react-redux quiere dos funciones, mapStateToProps y mapDispatchToProps , dentro de la segunda puede llamar a un reductor usando la función de dispatch . por lo que tendrás que volver a renderizar en todas las tiendas.Evite tener una tienda múltiple, incluso tener una y lidiar con ella hace que el proyecto sea un poco difícil de mantener. cómo quieres lidiar con multi. hace cosas complicadas.
Sí, es posible. Para mantenerlo simple, la biblioteca es un paquete completamente independiente donde puede usar el redux de manera normal. Y a medida que exporta los componentes de la biblioteca al mundo exterior, exporte de la misma manera la tienda o el envío que le gustaría usar en su aplicación que consume la biblioteca.