Pular para o conteúdo principal

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​

main.ts
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​

observação

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.