apollo-client - 我可以在 apollo-client 实例化后动态调整 apolloLinks 吗?
apollo-client - can I adjust apolloLinks dynamically after apollo-client instantiation?
如何在运行时在实例化的 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 returns 一个新的 ApolloLink 实例。有没有办法用这个新的 ApolloLink 更新客户端实例?
您不需要创建一个新的 ApolloLink
-- 您将一个函数传递给 ApolloLink
的构造函数,该函数在每次发出请求时都是 运行,因此只需处理函数内部的逻辑:
const middleware = new ApolloLink((operation, forward) => {
const headers = new HttpHeaders()
const token = getTokenFromWherever()
headers.set('Authorization', 'Bearer ' + token)
operation.setContext({ header })
})
如何在运行时在实例化的 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 returns 一个新的 ApolloLink 实例。有没有办法用这个新的 ApolloLink 更新客户端实例?
您不需要创建一个新的 ApolloLink
-- 您将一个函数传递给 ApolloLink
的构造函数,该函数在每次发出请求时都是 运行,因此只需处理函数内部的逻辑:
const middleware = new ApolloLink((operation, forward) => {
const headers = new HttpHeaders()
const token = getTokenFromWherever()
headers.set('Authorization', 'Bearer ' + token)
operation.setContext({ header })
})