@urql/exchange-context
An exchange for setting operation context in urql
`@urql/exchange-context` is an exchange for the [`urql`](https://github.com/urql-graphql/urql) GraphQL client which can set the operation context both synchronously as well as asynchronously
## Quick Start Guide
First install `@urql/exchange-context` alongside `urql`:
```sh
yarn add @urql/exchange-context
# or
npm install --save @urql/exchange-context
```
You'll then need to add the `contextExchange`, that this package exposes, to your `urql` Client, the positioning of this exchange depends on whether you set an async setter or not. If you set an async context-setter it's best placed after all the synchronous exchanges (in front of the fetchExchange).
```js
import { createClient, cacheExchange, fetchExchange } from 'urql';
import { contextExchange } from '@urql/exchange-context';
const client = createClient({
url: 'http://localhost:1234/graphql',
exchanges: [
cacheExchange,
contextExchange({
getContext: async operation => {
const token = await getToken();
return { ...operation.context, headers: { authorization: token } };
},
}),
fetchExchange,
],
});
```