javascript - 动态设置 Apollo 客户端 header 不起作用

标签 javascript react-native graphql

我正在尝试根据官方doc动态设置Apollo客户端的 header ,但我收到一个错误:

    TypeError: (0 , _apollo.default) is not a function

这是我的 Apollo .js

import { ApolloClient } from 'apollo-client';
import { createHttpLink } from 'apollo-link-http';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { AsyncStorage } from 'react-native';

const httpLink = createHttpLink({
    uri: 'http://192.168.2.4:8000/api/',
});

const authLink = setContext((_, { headers }) => {
    const token = AsyncStorage.getItem('token');

    return {
        headers: {
            ...headers,
            authorization: token ? `Bearer ${token}` : "",
        }
    }
});

const client = new ApolloClient({
    link: authLink.concat(httpLink),
    cache: new InMemoryCache()
});

export default client; 

更新

我正在添加 应用.js :
import { ApolloProvider } from 'react-apollo';
import Routes from './app/config/routes';
import makeApolloClient from './app/config/apollo';

export default function App() {
  const client = makeApolloClient();

  return (
    <ApolloProvider client={client}>
      <Routes />
    </ApolloProvider>);
}

我该如何解决这个问题?

最佳答案

Apollo usequery 有一个上下文选项,允许您动态更改或更新 header 对象的值。

import { ApolloClient, InMemoryCache } from "@apollo/client";

const client = new ApolloClient({
  cache: new InMemoryCache(),
  uri: "/graphql"
});

client.query({
  query: MY_QUERY,
  context: {
    // example of setting the headers with context per operation
    headers: {
      special: "Special header value"
    }
  }
});
上面的代码是从 Apollo 文档中复制的。
要了解更多信息,请查看 https://www.apollographql.com/docs/react/networking/advanced-http-networking/#overriding-options

关于javascript - 动态设置 Apollo 客户端 header 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61495727/

相关文章:

javascript - 用Ajax加载的html编写的Dom对象

react-native - 如何在 Material Top Tab Navigator 中为屏幕添加静态背景图片?

react-native - React Android 中的 native 自动链接问题(RN 0.61.5)

javascript - 如何将页面模板拆分为单独的组件,每个组件都查询数据?

node.js - 带有明确错误 : Query. 的 GraphQL 示例字段类型必须是输出类型,但得到:[object Object]

javascript - Firefox (57.0.1) 是否支持从 javascript 设置 Web 扩展中的命令快捷键?

javascript - 如何以时间间隔显示来自两个 Adsense 帐户的广告?

javascript三位数计数器怎么做?

react-native - 如何从使用 Expo 和 React Native 构建的应用程序连接到 SSID?

python - Graphite 烯突变不映射 SQLAlchemy 中的模型