gpt4 book ai didi

javascript - 如何在 react 原生应用程序中为 apollo 客户端添加 header

转载 作者:行者123 更新时间:2023-12-03 18:33:13 24 4
gpt4 key购买 nike

这就是我在我的 react native 应用程序中使用上传链接定义 apollo 客户端的方式。

我想添加一些带有 token 值的 header ,它会随每个请求一起发送。但不幸的是,我没有找到 react native 的示例。

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')

更新

我不知道如何将 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'
}
})
}

最佳答案

createUploadLink 有一个与 createHttpLink 匹配的 headers 属性标题属性。

headers: an object representing values to be sent as headers on the request



sample
const token = await AsyncStorage.getItem('auth.token')

const client = new ApolloClient({
link: createUploadLink({
uri: 'http://localhost:3000/graphql',
headers: {
"Some-Custom-Header": token
}
}),
cache: new InMemoryCache()
})

更新
const getToken = async () => {
const token = await AsyncStorage.getItem('auth.token')
return token
}
const token = getToken()
// 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'
}
})
}

关于javascript - 如何在 react 原生应用程序中为 apollo 客户端添加 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com