getDefaultManagers()
getDefaultManagers devuelve un Array de Managers para enviar a DataClientPlugin.
Esto facilita configurar y agregar Managers personalizados, a la vez que te protege frente a posibles cambios en los managers por defecto.
Actualmente devuelve [DevToolsManager*, NetworkManager, SubscriptionManager].
*(DevToolsManager se excluye en las compilaciones de producción.)
Uso
import { createApp } from 'vue';
import { DataClientPlugin, getDefaultManagers } from '@data-client/vue';
import App from './App.vue';
const managers = getDefaultManagers({
// set fallback expiry time to an hour
networkManager: { dataExpiryLength: 1000 * 60 * 60 },
});
const app = createApp(App);
app.use(DataClientPlugin, { managers });
app.mount('#app');
Cuando se omite managers, DataClientPlugin usa getDefaultManagers() sin argumentos.
Consulta DataClientPlugin para ver las
demás opciones.
Argumentos
Cada argumento representa la configuración de un manager. Puede ser de tres tipos:
- Cualquier objeto plano se usa como opciones que se envían al constructor del manager.
- Una instancia del manager que se usará directamente.
null. Al enviarlo, se excluye el manager.
getDefaultManagers({
devToolsManager: { trace: true },
networkManager: new NetworkManager({ errorExpiryLength: 1 }),
subscriptionManager: null,
});
networkManager
null no está permitido aquí porque NetworkManager es obligatorio
dataExpiryLength se usa como valor de respaldo cuando un Endpoint no tiene definido dataExpiryLength.
errorExpiryLength se usa como valor de respaldo cuando un Endpoint no tiene definido errorExpiryLength.
devToolsManager
Argumentos que se envían a redux devtools.
subscriptionManager
Una clase que implementa SubscriptionConstructable, como PollingSubscription
Ejemplos
Rastreo de acciones
Por ejemplo, podemos habilitar la opción trace para ayudar a rastrear desde dónde se despachan las acciones. Esto tiene un gran impacto en el rendimiento, por lo que normalmente está deshabilitada.
const managers = getDefaultManagers({
devToolsManager: { trace: true },
});
Herencia de managers
Enviar instancias de manager nos permite personalizar los managers mediante herencia.
import {
NetworkManager,
getDefaultManagers,
type FetchAction,
} from '@data-client/vue';
class LoggingNetworkManager extends NetworkManager {
protected handleFetch(action: FetchAction) {
console.log('fetching', action.key);
return super.handleFetch(action);
}
}
const managers = getDefaultManagers({
networkManager: new LoggingNetworkManager(),
});
Deshabilitar
Usar null elimina los managers por completo. NetworkManager no se puede eliminar de esta forma.
const managers = getDefaultManagers({
devToolsManager: null,
subscriptionManager: null,
});
Aquí deshabilitamos todos los managers excepto NetworkManager.