apollo-client - можно ли динамически настраивать apolloLinks после создания экземпляра apollo-client? - PullRequest
0 голосов
/ 20 декабря 2018

Как я могу обновить токен во время выполнения в инстанцированном экземпляре apollo-client?

const middleware = new ApolloLink((operation, forward) => {
    operation.setContext({
        headers: new HttpHeaders().set('Authorization', 'Bearer ' + token || null)});
        return forward(operation);
    });


apollo.createNamed(id, {
    link: from([logoutLink, middleware, http]),
    cache: new InMemoryCache(),
});

Экземпляр apollo имеет свойство link, которое само является экземпляром ApolloLink и имеет метод concat.

apollo.getclient().link.concat()

Но при вызове concat возвращается новый экземпляр ApolloLink.Есть ли способ обновить экземпляр клиента с помощью этого нового ApolloLink?

1 Ответ

0 голосов
/ 20 декабря 2018

Вам не нужно создавать новый ApolloLink - вы передаете функцию конструктору ApolloLink, который запускается каждый раз, когда делается запрос, поэтому просто обработайте эту логику внутри функции:

const middleware = new ApolloLink((operation, forward) => {
  const headers = new HttpHeaders()
  const token = getTokenFromWherever()
  headers.set('Authorization', 'Bearer ' + token)
  operation.setContext({ header })
})
...