Sam*_*mmy 5 asynchronous apollo react-apollo apollo-client
对于以下代码:
const apolloClient = new ApolloClient({
cache: new InMemoryCache(),
link: new HttpLink({
uri: endpoint,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
}
})
});
Run Code Online (Sandbox Code Playgroud)
我需要异步endpoint
获取token
。我该怎么做?
谢谢
您可以使用apollo-link-context修改您的请求。如果您没有在每个请求中获取这些值,您可以缓存所示的值。
let token
let uri
const contextLink = setContext(async () => {
if (!token) {
token = await getTokenAsync()
}
if (!uri) {
uri = await getUriAsync()
}
return { uri, token }
});
const client = new ApolloClient({
...
link: ApolloLink.from([
contextLink,
httpLink,
])
})
Run Code Online (Sandbox Code Playgroud)
以上是动态设置这些参数的优选方式。或者,您可以在渲染 ApolloProvider 之前获取令牌和 URI,然后根据这些值动态创建客户端实例。