Saltar al contenido principal

Integración con Redux

Usar redux es totalmente opcional. Sin embargo, para muchos significa una integración o migración sencilla con proyectos existentes, o simplemente una buena abstracción centralizada para manejar el estado.

index.tsx
import {
ExternalDataProvider,
prepareStore,
type Middleware,
} from '@data-client/react/redux';
import { getDefaultManagers, Controller } from '@data-client/react';
import { createRoot } from 'react-dom/client';
import App from './App';

const managers = getDefaultManagers();
// be sure to include your other reducers here
const otherReducers = {};
const extraMiddlewares: Middleware[] = [];
// for instance, state serialized from the server
const initialState = {};

const { store, selector, controller } = prepareStore(
initialState,
managers,
Controller,
otherReducers,
extraMiddlewares,
);

createRoot(document.body).render(
<ExternalDataProvider
store={store}
selector={selector}
controller={controller}
>
<App />
</ExternalDataProvider>,
);

Luego querrás usar <ExternalDataProvider /> en lugar de <DataProvider /> y pasarle el store y una función selectora para obtener la parte del estado específica de Reactive Data Client.

Note

Solo debes usar UN provider; anidar otro provider sobrescribirá el anterior.

Note

Como los middlewares de manager de Reactive Data Client devuelven promesas, todos los middlewares de redux se colocan después de los Managers.

Si necesitas que un middleware se ejecute antes que los managers, tendrás que envolverlo en un manager.