Так я определяю клиента apollo со ссылкой для загрузки в моем собственном приложении реагирования.
Я хотел бы добавить заголовок со значением токена, который будет отправляться при каждом запросе. Но к сожалению я не нашел пример реакции на родную.
import { AsyncStorage } from 'react-native'
import { ApolloClient } from 'apollo-client'
import { createUploadLink } from 'apollo-upload-client'
import { InMemoryCache } from 'apollo-cache-inmemory'
const client = new ApolloClient({
link: createUploadLink({
uri: 'http://localhost:3000/graphql'
}),
cache: new InMemoryCache()
})
Я бы хотел отправить это значение в шапку:
const token = await AsyncStorage.getItem('auth.token')
Обновление
Я не знаю, как вставить токен из AsyncStorage в заголовок. Await
не может работать здесь, так как он не используется в асинхронной функции:
const token = await AsyncStorage.getItem('auth.token') // await can't work here
// Initiate apollo client
const client = new ApolloClient({
link: createUploadLink({
uri: 'http://localhost:3000/graphql',
headers: {
authorization: token
}
}),
cache: new InMemoryCache()
})
// Wrap apollo provider
const withProvider = (Component, client) => {
return class extends React.Component {
render () {
return (
<ApolloProvider client={client}>
<Component {...this.props} client={client} />
</ApolloProvider>
)
}
}
}
export default async () => {
Navigation.registerComponent('MainScreen', () => withProvider(MainScreen, client))
Navigation.startSingleScreenApp({
screen: {
screen: 'MainScreen'
}
})
}