我正在尝试为所有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 } },
},
});
真的不知道我在做什么错,感谢任何帮助。
答案 0 :(得分:0)
如果您使用其他变量调用map
,它将完全覆盖默认变量。因此,您应该能够执行以下操作:
render() {
console.log('render started');
return (
<div>
{this.state.exRates.map(rate => {
return <div>{rate.toString()}</div>
})}
<button
type="button"
className="btn"
onClick={() => {
this.getCurrencyRatesFromDB();
}}
>
Load rates
</button>
<p>{this.state}</p>
</div>
)
}
诸如ApolloClient.query
之类的钩子似乎可以正确地将默认变量与任何其他变量合并,因此不需要这样做。