Apollo-link: Deixe o usuário de apollo-link-batch-http decidir qual solicitação enviar em lote

Criado em 7 jan. 2018  ·  2Comentários  ·  Fonte: apollographql/apollo-link

Ao usar _apollo-link-batch-http_ todas as solicitações em um intervalo de tempo específico são chamadas em lote. Em nosso aplicativo, a maioria das solicitações são rápidas, mas também temos algumas solicitações demoradas. Colocar em lote solicitações lentas conhecidas com outras resultaria em uma experiência do usuário pior, pois agora todas as solicitações têm o mesmo tempo de resposta que a mais lenta. É por isso que seria bom se houvesse um retorno de chamada que pudesse decidir se uma solicitação deveria ser disparada em lote imediatamente.

Comentários muito úteis

Você pode fazer isso com divisão
__links.js__

const batchHttpLink = new BatchHttpLink({
  fetch: createApolloFetch({
    constructOptions,
    uri: process.env.REACT_APP_API_ENDPOINT,
  }),
})

const normalHttpLink = createHttpLink({
  uri: '/graphql',
  credentials: 'same-origin',
})

export split(({getContext}) => getContext().noBatch, normalHttpLink, batchHttpLink)

Faça uma consulta, não use o link de lote

const ProfileWithData = graphql(CurrentUserForLayout, {
  options: { 
    context: { noBatch: true }
  },
})(Profile);

Aqui eu uso noBatch no contexto para controlar se uma consulta deve ser agrupada. Por padrão, todas as consultas serão agrupadas.

Todos 2 comentários

Você pode fazer isso com divisão
__links.js__

const batchHttpLink = new BatchHttpLink({
  fetch: createApolloFetch({
    constructOptions,
    uri: process.env.REACT_APP_API_ENDPOINT,
  }),
})

const normalHttpLink = createHttpLink({
  uri: '/graphql',
  credentials: 'same-origin',
})

export split(({getContext}) => getContext().noBatch, normalHttpLink, batchHttpLink)

Faça uma consulta, não use o link de lote

const ProfileWithData = graphql(CurrentUserForLayout, {
  options: { 
    context: { noBatch: true }
  },
})(Profile);

Aqui eu uso noBatch no contexto para controlar se uma consulta deve ser agrupada. Por padrão, todas as consultas serão agrupadas.

Obrigado pelo exemplo @charleyw - vou prosseguir e encerrar, pois a pergunta parece ter sido respondida.

Esta página foi útil?
0 / 5 - 0 avaliações