getDefaultManagers()
getDefaultManagers retorna um Array de Managers para ser enviado ao DataClientPlugin.
Isso facilita configurar e adicionar Managers personalizados, mantendo a robustez diante de possíveis mudanças nos managers padrão.
Atualmente retorna [DevToolsManager*, NetworkManager, SubscriptionManager].
*(DevToolsManager é excluído nos builds de produção.)
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');
Quando managers é omitido, o DataClientPlugin usa getDefaultManagers() sem argumentos.
Veja DataClientPlugin para as
outras opções.
Argumentos
Cada argumento representa a configuração de um manager. Ele pode ser de três tipos:
- Qualquer objeto simples é usado como opções a serem enviadas ao construtor do manager.
- Uma instância do manager, usada diretamente.
null. Quando enviado, exclui o manager.
getDefaultManagers({
devToolsManager: { trace: true },
networkManager: new NetworkManager({ errorExpiryLength: 1 }),
subscriptionManager: null,
});
networkManager
null não é permitido aqui, pois o NetworkManager é obrigatório
dataExpiryLength é usado como fallback quando um Endpoint não tem dataExpiryLength definido.
errorExpiryLength é usado como fallback quando um Endpoint não tem errorExpiryLength definido.
devToolsManager
Argumentos a enviar ao redux devtools.
subscriptionManager
Uma classe que implementa SubscriptionConstructable, como PollingSubscription
Exemplos
Rastreando actions
Por exemplo, podemos ativar a opção trace para ajudar a descobrir de onde as actions são despachadas. Ela tem um grande impacto no desempenho, por isso normalmente fica desativada.
const managers = getDefaultManagers({
devToolsManager: { trace: true },
});
Herança de managers
Enviar instâncias de managers nos permite personalizá-los por meio de herança.
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(),
});
Desativando
Usar null remove os managers por completo. O NetworkManager não pode ser removido dessa forma.
const managers = getDefaultManagers({
devToolsManager: null,
subscriptionManager: null,
});
Aqui desativamos todos os managers, exceto o NetworkManager.