Skip to content

Commit db9e246

Browse files
authored
Merge pull request #4141 from goncalooliveirasilva/fix/part8-apollo-client
Part 8b, 8d, 8e: update Apollo Client imports (ApolloProvider, useQuery, useMutation) and setup to v4
2 parents 85b0896 + 3f107df commit db9e246

File tree

12 files changed

+79
-59
lines changed

12 files changed

+79
-59
lines changed

src/content/8/en/part8b.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ At the moment, there are two good options: [Relay](https://facebook.github.io/re
2323

2424
### Apollo client
2525

26-
Let us create a new React app, and can continue installing dependencies required by [Apollo client](https://www.apollographql.com/docs/react/get-started/).
26+
Let's create a new React app and install the necessary dependencies for [Apollo client](https://www.apollographql.com/docs/react/get-started/).
2727

2828
```bash
2929
npm install @apollo/client graphql
@@ -35,10 +35,12 @@ We'll start with the following code for our application:
3535
import ReactDOM from 'react-dom/client'
3636
import App from './App'
3737

38-
import { ApolloClient, InMemoryCache, gql } from '@apollo/client'
38+
import { ApolloClient, HttpLink, InMemoryCache, gql } from '@apollo/client'
3939

4040
const client = new ApolloClient({
41-
uri: 'http://localhost:4000',
41+
link: new HttpLink({
42+
uri: 'http://localhost:4000'
43+
}),
4244
cache: new InMemoryCache(),
4345
})
4446

@@ -84,14 +86,13 @@ The application can communicate with a GraphQL server using the *client* object.
8486
import ReactDOM from 'react-dom/client'
8587
import App from './App'
8688

87-
import {
88-
ApolloClient,
89-
ApolloProvider, // highlight-line
90-
InMemoryCache,
91-
} from '@apollo/client'
89+
import { ApolloClient, HttpLink, InMemoryCache } from '@apollo/client'
90+
import { ApolloProvider } from '@apollo/client/react' // highlight-line
9291

9392
const client = new ApolloClient({
94-
uri: 'http://localhost:4000',
93+
link: new HttpLink({
94+
uri: 'http://localhost:4000'
95+
}),
9596
cache: new InMemoryCache(),
9697
})
9798

@@ -112,7 +113,8 @@ Currently, the use of the hook function [useQuery](https://www.apollographql.com
112113
The query is made by the <i>App</i> component, the code of which is as follows:
113114

114115
```js
115-
import { gql, useQuery } from '@apollo/client'
116+
import { gql } from '@apollo/client'
117+
import { useQuery } from '@apollo/client/react'
116118

117119
const ALL_PERSONS = gql`
118120
query {
@@ -245,7 +247,8 @@ The solution is as follows:
245247

246248
```js
247249
import { useState } from 'react'
248-
import { gql, useQuery } from '@apollo/client'
250+
import { gql } from '@apollo/client'
251+
import { useQuery } from '@apollo/client/react'
249252

250253
const FIND_PERSON = gql`
251254
query findPersonByName($nameToSearch: String!) {
@@ -401,7 +404,8 @@ Let's create a new component for adding a new person to the directory:
401404

402405
```js
403406
import { useState } from 'react'
404-
import { gql, useMutation } from '@apollo/client'
407+
import { gql } from '@apollo/client'
408+
import { useMutation } from '@apollo/client/react'
405409

406410
const CREATE_PERSON = gql`
407411
// ...
@@ -686,7 +690,7 @@ Interesting lines on the code have been highlighted.
686690
687691
```js
688692
import { useState } from 'react'
689-
import { useMutation } from '@apollo/client'
693+
import { useMutation } from '@apollo/client/react'
690694

691695
import { EDIT_NUMBER } from '../queries'
692696

src/content/8/en/part8d.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Interesting lines in the code have been highlighted:
5555

5656
```js
5757
import { useState, useEffect } from 'react'
58-
import { useMutation } from '@apollo/client'
58+
import { useMutation } from '@apollo/client/react'
5959
import { LOGIN } from '../queries'
6060

6161
const LoginForm = ({ setError, setToken }) => {
@@ -164,7 +164,8 @@ const App = () => {
164164
After the backend changes, creating new persons requires that a valid user token is sent with the request. In order to send the token, we have to change the way we define the *ApolloClient* object in <i>main.jsx</i> a little.
165165

166166
```js
167-
import { ApolloClient, InMemoryCache, ApolloProvider, createHttpLink } from '@apollo/client' // highlight-line
167+
import { ApolloClient, InMemoryCache, createHttpLink } from '@apollo/client' // highlight-line
168+
import { ApolloProvider } from '@apollo/client/react'
168169
import { setContext } from '@apollo/client/link/context' // highlight-line
169170

170171
// highlight-start

src/content/8/en/part8e.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -351,15 +351,15 @@ Unfortunately, startStandaloneServer does not allow adding subscriptions to the
351351
Let us install Express
352352

353353
```bash
354-
npm install express cors
354+
npm install express cors @as-integrations/express5
355355
```
356356

357357
and the file <i>index.js</i> changes to:
358358

359359
```js
360360
const { ApolloServer } = require('@apollo/server')
361361
// highlight-start
362-
const { expressMiddleware } = require('@apollo/server/express4')
362+
const { expressMiddleware } = require('@as-integrations/express5')
363363
const { ApolloServerPluginDrainHttpServer } = require('@apollo/server/plugin/drainHttpServer')
364364
const { makeExecutableSchema } = require('@graphql-tools/schema')
365365
const express = require('express')
@@ -464,7 +464,7 @@ The file <i>index.js</i> is changed to:
464464
```js
465465
// highlight-start
466466
const { WebSocketServer } = require('ws')
467-
const { useServer } = require('graphql-ws/lib/use/ws')
467+
const { useServer } = require('graphql-ws/use/ws')
468468
// highlight-end
469469

470470
// ...
@@ -646,9 +646,10 @@ The configuration in <i>main.jsx</i> has to be modified like so:
646646

647647
```js
648648
import {
649-
ApolloClient, InMemoryCache, ApolloProvider, createHttpLink,
649+
ApolloClient, InMemoryCache, createHttpLink,
650650
split // highlight-line
651651
} from '@apollo/client'
652+
import { ApolloProvider } from '@apollo/client/react'
652653
import { setContext } from '@apollo/client/link/context'
653654

654655
// highlight-start
@@ -739,7 +740,7 @@ and do the subscription in the App component:
739740

740741
```js
741742

742-
import { useQuery, useMutation, useSubscription } from '@apollo/client' // highlight-line
743+
import { useQuery, useMutation, useSubscription } from '@apollo/client/react' // highlight-line
743744

744745

745746
const App = () => {

src/content/8/es/part8b.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,9 @@ import ReactDOM from 'react-dom'
8888
import App from './App'
8989

9090
import {
91-
ApolloClient, ApolloProvider, HttpLink, InMemoryCache // highlight-line
91+
ApolloClient, HttpLink, InMemoryCache // highlight-line
9292
} from '@apollo/client'
93+
import { ApolloProvider } from '@apollo/client/react' // highlight-line
9394

9495
const client = new ApolloClient({
9596
cache: new InMemoryCache(),
@@ -119,7 +120,8 @@ La consulta la realiza el componente <i>App</i>, cuyo código es el siguiente:
119120

120121
```js
121122
import React from 'react'
122-
import { gql, useQuery } from '@apollo/client';
123+
import { gql } from '@apollo/client'
124+
import { useQuery } from '@apollo/client/react'
123125

124126
const ALL_PERSONS = gql`
125127
query {
@@ -410,7 +412,8 @@ Creemos un nuevo componente para agregar una nueva persona al directorio:
410412

411413
```js
412414
import React, { useState } from 'react'
413-
import { gql, useMutation } from '@apollo/client'
415+
import { gql } from '@apollo/client'
416+
import { useMutation } from '@apollo/client/react'
414417

415418
const CREATE_PERSON = gql`
416419
// ...
@@ -555,7 +558,7 @@ Por el momento, en nuestro código, las consultas y el componente están definid
555558
Separemos las definiciones de consulta en su propio archivo <i>queries.js</i>:
556559
557560
```js
558-
import { gql } from '@apollo/client'
561+
import { gql } from '@apollo/client'
559562

560563
export const ALL_PERSONS = gql`
561564
query {
@@ -697,7 +700,7 @@ Se han resaltado líneas interesantes en el código.
697700
698701
```js
699702
import React, { useState } from 'react'
700-
import { useMutation } from '@apollo/client'
703+
import { useMutation } from '@apollo/client/react'
701704

702705
import { EDIT_NUMBER } from '../queries'
703706

src/content/8/es/part8d.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Se han resaltado líneas interesantes en el código:
5757

5858
```js
5959
import React, { useState, useEffect } from 'react'
60-
import { useMutation } from '@apollo/client'
60+
import { useMutation } from '@apollo/client/react'
6161
import { LOGIN } from '../queries'
6262

6363
const LoginForm = ({ setError, setToken }) => {
@@ -167,7 +167,8 @@ const App = () => {
167167
Después de que el backend cambie, la creación de nuevas personas requiere que se envíe un token de usuario válido con la solicitud. Para enviar el token, tenemos que cambiar un poco la forma en que definimos el objeto _ApolloClient_ en <i>index.js</i>.
168168

169169
```js
170-
import { ApolloClient, InMemoryCache, ApolloProvider, createHttpLink } from '@apollo/client' // highlight-line
170+
import { ApolloClient, InMemoryCache, createHttpLink } from '@apollo/client' // highlight-line
171+
import { ApolloProvider } from '@apollo/client/react'
171172
import { setContext } from '@apollo/client/link/context' // highlight-line
172173

173174
// highlight-start

src/content/8/es/part8e.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,10 @@ La configuración en <i>index.js</i> tiene que ser modificada así:
228228

229229
```js
230230
import {
231-
ApolloClient, ApolloProvider, HttpLink, InMemoryCache,
231+
ApolloClient, HttpLink, InMemoryCache,
232232
split // highlight-line
233233
} from '@apollo/client'
234+
import { ApolloProvider } from '@apollo/client/react'
234235
import { setContext } from 'apollo-link-context'
235236

236237
// highlight-start
@@ -323,7 +324,7 @@ export const PERSON_ADDED = gql`
323324

324325
import {
325326
useQuery, useMutation, useSubscription, useApolloClient // highlight-line
326-
} from '@apollo/client'
327+
} from '@apollo/client/react'
327328

328329
const App = () => {
329330
// ...

src/content/8/fi/osa8b.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ Aloitetaan seuraavalla ohjelmarungolla.
3131
import ReactDOM from 'react-dom/client'
3232
import App from './App'
3333

34-
import { ApolloClient, InMemoryCache, gql } from '@apollo/client'
34+
import { ApolloClient, HttpLink, InMemoryCache, gql } from '@apollo/client'
3535

3636
const client = new ApolloClient({
37-
uri: 'http://localhost:4000',
37+
link: new HttpLink({
38+
uri: 'http://localhost:4000'
39+
}),
3840
cache: new InMemoryCache(),
3941
})
4042

@@ -80,14 +82,13 @@ Sovellus pystyy siis kommunikoimaan GraphQL-palvelimen kanssa olion _client_ vä
8082
import ReactDOM from 'react-dom/client'
8183
import App from './App'
8284

83-
import {
84-
ApolloClient,
85-
ApolloProvider, // highlight-line
86-
InMemoryCache,
87-
} from '@apollo/client'
85+
import { ApolloClient, HttpLink, InMemoryCache } from '@apollo/client'
86+
import { ApolloProvider } from '@apollo/client/react' // highlight-line
8887

8988
const client = new ApolloClient({
90-
uri: 'http://localhost:4000',
89+
link: new HttpLink({
90+
uri: 'http://localhost:4000'
91+
}),
9192
cache: new InMemoryCache(),
9293
})
9394

@@ -107,7 +108,8 @@ Apollo Client tarjoaa muutaman vaihtoehtoisen tavan [kyselyjen](https://www.apol
107108
Kyselyn tekevän komponentin <i>App</i> koodi näyttää seuraavalta:
108109

109110
```js
110-
import { gql, useQuery } from '@apollo/client'
111+
import { gql } from '@apollo/client'
112+
import { useQuery } from '@apollo/client/react'
111113

112114
const ALL_PERSONS = gql`
113115
query {
@@ -237,7 +239,8 @@ Ratkaisu on seuraavassa:
237239

238240
```js
239241
import { useState } from 'react'
240-
import { gql, useQuery } from '@apollo/client'
242+
import { gql } from '@apollo/client'
243+
import { useQuery } from '@apollo/client/react'
241244

242245
const FIND_PERSON = gql`
243246
query findPersonByName($nameToSearch: String!) {
@@ -392,7 +395,8 @@ Tehdään sovellukseen uusi komponentti uuden henkilön lisämiseen:
392395

393396
```js
394397
import { useState } from 'react'
395-
import { gql, useMutation } from '@apollo/client'
398+
import { gql } from '@apollo/client'
399+
import { useMutation } from '@apollo/client/react'
396400

397401
const CREATE_PERSON = gql`
398402
// ...
@@ -664,7 +668,7 @@ Muutoksen suorittava komponentti <i>PhoneForm</i> on suoraviivainen, se kysyy lo
664668
665669
```js
666670
import { useState } from 'react'
667-
import { useMutation } from '@apollo/client'
671+
import { useMutation } from '@apollo/client/react'
668672

669673
import { EDIT_NUMBER } from '../queries'
670674

src/content/8/fi/osa8d.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Kirjautumisesta huolehtiva komponentti _LoginForm_ toimii melko samalla tavalla
5454

5555
```js
5656
import { useState, useEffect } from 'react'
57-
import { useMutation } from '@apollo/client'
57+
import { useMutation } from '@apollo/client/react'
5858
import { LOGIN } from '../queries'
5959

6060
const LoginForm = ({ setError, setToken }) => {
@@ -164,7 +164,8 @@ Backendin muutosten jälkeen uusien henkilöiden lisäys puhelinluetteloon vaati
164164
Tämä edellyttää pientä muutosta tiedostossa <i>main.jsx</i> olevaan ApolloClient-olion konfiguraatioon
165165

166166
```js
167-
import { ApolloClient, InMemoryCache, ApolloProvider, createHttpLink } from '@apollo/client' // highlight-line
167+
import { ApolloClient, InMemoryCache, createHttpLink } from '@apollo/client' // highlight-line
168+
import { ApolloProvider } from '@apollo/client/react'
168169
import { setContext } from '@apollo/client/link/context' // highlight-line
169170

170171
// highlight-start

src/content/8/fi/osa8e.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,15 @@ startStandaloneServer ei kuitenkaan mahdollista subscriptioiden lisäämistä so
350350
Asennetaan Express:
351351

352352
```
353-
npm install express cors
353+
npm install express cors @as-integrations/express5
354354
```
355355

356356
ja muutetaan tiedosto <i>index.js</i> seuraavaan muotoon:
357357

358358
```js
359359
const { ApolloServer } = require('@apollo/server')
360360
// highlight-start
361-
const { expressMiddleware } = require('@apollo/server/express4')
361+
const { expressMiddleware } = require('@as-integrations/express5')
362362
const { ApolloServerPluginDrainHttpServer } = require('@apollo/server/plugin/drainHttpServer')
363363
const { makeExecutableSchema } = require('@graphql-tools/schema')
364364
const express = require('express')
@@ -468,7 +468,7 @@ Tiedosto <i>index.js</i> muuttuu seuraavasti
468468
```js
469469
// highlight-start
470470
const { WebSocketServer } = require('ws')
471-
const { useServer } = require('graphql-ws/lib/use/ws')
471+
const { useServer } = require('graphql-ws/use/ws')
472472
// highlight-end
473473

474474
// ...
@@ -655,9 +655,10 @@ Jotta saamme tilaukset käyttöön React-sovelluksessa, tarvitaan jonkin verran
655655

656656
```js
657657
import {
658-
ApolloClient, InMemoryCache, ApolloProvider, createHttpLink,
658+
ApolloClient, InMemoryCache, createHttpLink,
659659
split // highlight-line
660660
} from '@apollo/client'
661+
import { ApolloProvider } from '@apollo/client/react'
661662
import { setContext } from 'apollo-link-context'
662663

663664
// highlight-start
@@ -745,7 +746,7 @@ export const PERSON_ADDED = gql`
745746
ja tehdään tilaus komponentissa App:
746747

747748
```js
748-
import { useQuery, useApolloClient, useSubscription } from '@apollo/client'
749+
import { useQuery, useApolloClient, useSubscription } from '@apollo/client/react'
749750
import { PERSON_ADDED } from './queries.js'
750751

751752
const App = () => {

0 commit comments

Comments
 (0)