【问题标题】:How to setup global variables in apollo-client如何在 apollo-client 中设置全局变量
【发布时间】:2019-12-01 12:28:37
【问题描述】:

我正在尝试为所有 graphql 查询设置全局变量,我正在使用 Apollo-client,它在其设置中提供了 defaultOptions,我可以在其中设置变量,但突变更新中的突变和查询会忽略它们。

return new ApolloClient({
    connectToDevTools: isBrowser,
    ssrMode: !isBrowser, // Disables forceFetch on the server (so queries are only run once)
    link: new HttpLink({
        uri: GRAPHQL_URL, // Server URL (must be absolute)
        credentials: 'same-origin', // Additional fetch() options like `credentials` or `headers`
        // Use fetch() polyfill on the server
        fetch: !isBrowser ? fetch : undefined,
    }),
    cache: new InMemoryCache().restore(initialState || {}),
    defaultOptions: {
        mutate: { variables: { domain: NEW_YORK_GQL_DOMAIN } },
        watchQuery: { variables: { domain: NEW_YORK_GQL_DOMAIN } },
        query: { variables: { domain: NEW_YORK_GQL_DOMAIN } },
    },
});

真的不知道我做错了什么,感谢任何帮助。

【问题讨论】:

    标签: reactjs graphql react-apollo apollo-client


    【解决方案1】:

    如果您使用其他变量调用ApolloClient.query,它将完全覆盖默认变量。所以你应该能够做到以下几点:

    const result = await apolloClient.query({
      query,
      variables: {
        ...apolloClient.defaultOptions.query.variables,
        uri
      }
    });
    

    useQuery 之类的钩子似乎可以正确地将默认变量与任何其他变量合并,因此不需要这样做。

    【讨论】:

      猜你喜欢
      • 2019-12-24
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多