apollo-client - можно ли динамически настраивать apolloLinks после создания экземпляра apollo-client?
Как я могу обновить токен во время выполнения в экземпляре 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 ответ
Решение
Вам не нужно создавать новый ApolloLink
- вы передаете функцию ApolloLink
конструктор, который запускается каждый раз, когда делается запрос, поэтому просто обработайте эту логику внутри функции:
const middleware = new ApolloLink((operation, forward) => {
const headers = new HttpHeaders()
const token = getTokenFromWherever()
headers.set('Authorization', 'Bearer ' + token)
operation.setContext({ header })
})