Skip to content

Commit 5512453

Browse files
committed
changed to same * style instead of _
1 parent 5188bee commit 5512453

File tree

1 file changed

+21
-43
lines changed

1 file changed

+21
-43
lines changed

src/content/8/es/part8b.md

Lines changed: 21 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ La respuesta del servidor se imprime en la consola:
8080

8181
![](../../images/8/9a.png)
8282

83-
La aplicación puede comunicarse con un servidor GraphQL usando el objeto _client_. Se puede hacer que el cliente sea accesible para todos los componentes de la aplicación empaquetando el componente <i>App</i> con [ApolloProvider](https://www.apollographql.com/docs/react/get-started/#connect-your-client-to-react).
83+
La aplicación puede comunicarse con un servidor GraphQL usando el objeto *client*. Se puede hacer que el cliente sea accesible para todos los componentes de la aplicación empaquetando el componente <i>App</i> con [ApolloProvider](https://www.apollographql.com/docs/react/get-started/#connect-your-client-to-react).
8484

8585
```js
8686
import React from 'react'
@@ -148,9 +148,7 @@ const App = () => {
148148
export default App
149149
```
150150

151-
<!-- Hook-funktion _useQuery_ kutsuminen suorittaa parametrina annetun kyselyn. Hookin kutsuminen palauttaa olion, joka -->
152-
<!-- jolla en [useita kenttiä] (https://www.apollographql.com/docs/react/api/react/hooks/#result). Kenttä <i> cargando </i> en arvoltaan tosi, jos kyselyyn ei ole saatu vielä vastausta. Tässä tilanteessa renderöitävä koodi on -->
153-
Cuando se llama, _useQuery_ realiza la consulta que recibe como parámetro.
151+
Cuando se llama, *useQuery* realiza la consulta que recibe como parámetro.
154152
Devuelve un objeto con varios [campos](https://www.apollographql.com/docs/react/api/react/hooks/#result).
155153
El campo <i>loading</i> es verdadero si la consulta aún no ha recibido una respuesta.
156154
Luego se renderiza el siguiente código:
@@ -188,8 +186,7 @@ const Persons = ({ persons }) => {
188186
}
189187
```
190188

191-
<!-- Komponentti _App_ siis hoitaa edelleen kyselyn ja välittää tuloksen uuden komponentin renderöitäväksi: -->
192-
El componente _App_ aún realiza la consulta y pasa el resultado al nuevo componente que se va a representar:
189+
El componente *App* aún realiza la consulta y pasa el resultado al nuevo componente que se va a representar:
193190

194191
```js
195192
const App = () => {
@@ -248,8 +245,7 @@ También es posible realizar consultas con parámetros con GraphQL Playground. L
248245

249246
![](../../images/8/10x.png)
250247

251-
<!-- Pregunte käyttämämme _useQuery_ toimii hyvin tilanteissa, joissa kysely sobre tarkoitus suorittaa heti komponentin renderöinnin yhteydessä. Nyt kuitenkin haluamme tehdä kyselyn vasta siinä vaiheessa kun käyttäjä haluaa nähdä jonkin henkilön tiedot, eli kysely tehdään vasta [sitä tarvittaessa] (https://www.apollographql.com/docs.0-queries/#v3ta ejecutar consultas manualmente). -->
252-
El hook _useQuery_ es adecuado para situaciones en las que la consulta se realiza cuando se procesa el componente.
248+
El hook *useQuery* es adecuado para situaciones en las que la consulta se realiza cuando se procesa el componente.
253249
Sin embargo, ahora queremos realizar la consulta solo cuando un usuario desea ver los detalles de una persona específica, por lo que la consulta se realiza solo [según sea necesario](https://www.apollographql.com/docs/react/data/queries/#executing-queries-manually).
254250

255251
<!-- Tähän tilanteeseen sopii hook-funktio [useLazyQuery] (https://www.apollographql.com/docs/react/api/react/hooks/#uselazyquery). Komponentti <i> Personas </i> muuttuu seuraavasti: -->
@@ -326,12 +322,10 @@ const Persons = ({ persons }) => {
326322
export default Persons
327323
```
328324

329-
<!-- Koodi en kasvanut paljon, ja kaikki lisäykset eivät ole täysin ilmeisiä. -->
330325
El código ha cambiado bastante y todos los cambios no son completamente evidentes.
331326

332-
<!-- Jos henkilön yhteydessä olevaa nappia painetaan, suoritetaan klikkauksenkäsittelijä _showPerson_, joka tekee GraphQL-kyselyn henkilön tiedoista: -->
333327
Cuando se hace clic en el botón "show address" de una persona, se hace clic en el controlador de eventos
334-
_showPerson_, y realiza una consulta GraphQL para obtener los detalles de las personas:
328+
*showPerson*, y realiza una consulta GraphQL para obtener los detalles de las personas:
335329

336330
```js
337331
const [getPerson, result] = useLazyQuery(FIND_PERSON)
@@ -343,11 +337,9 @@ const showPerson = (name) => {
343337
}
344338
```
345339

346-
<!-- Kyselyn muuttujalle _nameToSearch_ määritellään arvo kutsuttaessa. -->
347-
La variable _nameToSearch_ de la consulta recibe un valor cuando se ejecuta la consulta.
340+
La variable *nameToSearch* de la consulta recibe un valor cuando se ejecuta la consulta.
348341

349-
<!-- Kyselyn vastaus tulee muuttujaan _result_, ja ​​sen arvo sijoitetaan komponentin tilan muutujaan _person_. Sijoitus tehdään _useEffect_-hookissa: -->
350-
La respuesta de la consulta se guarda en la variable _result_, y su valor se guarda en el estado del componente _person_ en el hook _useEffect_.
342+
La respuesta de la consulta se guarda en la variable *result*, y su valor se guarda en el estado del componente *person* en el hook *useEffect*.
351343

352344
```js
353345
useEffect(() => {
@@ -357,16 +349,14 @@ useEffect(() => {
357349
}, [result])
358350
```
359351

360-
<!-- Hookin toisena parametrina en _result.data_, tämä saa aikaan sen, että hookin ensimmäisenä parametrina oleva funktio suoritetaan <i> aina kun kyselyssä haetaan uuden henkilön tiedot </i>. Jos päivitystä ei hoidettaisi kontrolloidusti hookissa, seuraisi ongelmia sen jälkeen kun yksittäisen henkilön näkymästä palataan kaikkien henkilöiden näkymään. -->
361-
El segundo parámetro del hook es _result_, por lo que la función dada al hook como su segundo parámetro se ejecuta <i>cada vez que la consulta obtiene los detalles de una persona diferente</i>.
352+
El segundo parámetro del hook es *result*, por lo que la función dada al hook como su segundo parámetro se ejecuta <i>cada vez que la consulta obtiene los detalles de una persona diferente</i>.
362353
¿No manejaríamos la actualización de una manera controlada en un hook, volver de la vista de una sola persona a una lista de todas las personas causaría problemas?
363354

364-
Si el estado _person_ tiene un valor, en lugar de mostrar una lista de todas las personas, solo se muestran los detalles de una persona.
355+
Si el estado *person* tiene un valor, en lugar de mostrar una lista de todas las personas, solo se muestran los detalles de una persona.
365356

366357
![](../../images/8/11.png)
367358

368-
<!-- Yksittäisen henkilön näkymästä palataan kaikkien henkilöiden näkymään sijoittamalla tilan muuttujan _person_ arvoksi _null_. -->
369-
Cuando un usuario quiere volver a la lista de personas, el estado _person_ se establece en _null_.
359+
Cuando un usuario quiere volver a la lista de personas, el estado *person* se establece en *null*.
370360

371361
La solución no es la más ordenada posible, pero es lo suficientemente buena para nosotros.
372362

@@ -414,10 +404,8 @@ mutation createPerson($name: String!, $street: String!, $city: String!, $phone:
414404
`
415405
```
416406

417-
<!-- Mutaatioiden tekemiseen sopivan toiminnallisuuden tarjoaa hook-funktio [useMutation] (https://www.apollographql.com/docs/react/api/ react / hooks / # usemutation). -->
418407
La función hook [useMutation](https://www.apollographql.com/docs/react/api/react/hooks/#usemutation) proporciona la funcionalidad para realizar mutaciones.
419408

420-
<!-- Tehdään sovellukseen uusi komponentti uuden henkilön lisämiseen: -->
421409
Creemos un nuevo componente para agregar una nueva persona al directorio:
422410

423411
```js
@@ -482,16 +470,14 @@ const PersonForm = () => {
482470
export default PersonForm
483471
```
484472

485-
<!-- Lomakkeen koodi en suoraviivainen, mielenkiintoiset rivit en korostettu. Mutación suorittava funktio saadaan luotua _useMutation_-hookin avulla. Hook palauttaa kyselyfunktion <i> taulukon </i> ensimmäisenä alkiona: -->
486473
El código del formulario es sencillo y las líneas interesantes se han resaltado.
487-
Podemos definir la función de mutación usando el hook-_useMutation_.
474+
Podemos definir la función de mutación usando el hook-*useMutation*.
488475
El hook devuelve una <i>matriz</i>, cuyo primer elemento contiene el resultado de la mutación.
489476

490477
```js
491478
const [ createPerson ] = useMutation(CREATE_PERSON)
492479
```
493480

494-
<!-- Kyselyä tehtäessä määritellään kyselyn muuttujille arvot: -->
495481
Las variables de consulta reciben valores cuando se realiza la consulta:
496482

497483
```js
@@ -532,7 +518,7 @@ La solución es simple, y cada vez que un usuario agrega una nueva persona, apar
532518

533519
El lado malo de la solución es todo el tráfico web inútil.
534520

535-
Otra manera fácil de mantener la caché sincronizada es usar el hook de _useMutation_, el parámetro [refetchQueries](https://www.apollographql.com/docs/react/api/react/hooks/#params-2) para definir que la consulta que busca a todas las personas se realice nuevamente cada vez que se cree una nueva persona.
521+
Otra manera fácil de mantener la caché sincronizada es usar el hook de *useMutation*, el parámetro [refetchQueries](https://www.apollographql.com/docs/react/api/react/hooks/#params-2) para definir que la consulta que busca a todas las personas se realice nuevamente cada vez que se cree una nueva persona.
536522

537523
```js
538524
const ALL_PERSONS = gql`
@@ -565,7 +551,6 @@ Si deseas realizar varias consultas, puedes pasar varios objetos dentro de refet
565551
566552
Hay otras formas de actualizar la caché. Más sobre estos más adelante en esta parte.
567553
568-
<!-- Sovellukseen en tällä hetkellä määritelty kyselyjä komponenttien koodin sekaan. Eriytetään kyselyjen määrittely omaan tiedostoonsa <i> queries.js </i>: -->
569554
Por el momento, en nuestro código, las consultas y el componente están definidos en el mismo lugar.
570555
Separemos las definiciones de consulta en su propio archivo <i>queries.js</i>:
571556
@@ -590,7 +575,6 @@ export const CREATE_PERSON = gql`
590575
`
591576
```
592577
593-
<!-- Jokainen komponentti importtaa tarvitsemansa kyselyt: -->
594578
Luego, cada componente importa las consultas que necesita:
595579
596580
```js
@@ -610,9 +594,9 @@ Intentar crear una persona con datos no válidos provoca un error y toda la apli
610594
611595
![devtools showing error: name must be unique](../../images/8/14x.png)
612596
613-
Debemos manejar la excepción. Podemos registrar una función de manejo de errores en la mutación usando _onError_ [option](https://www.apollographql.com/docs/react/api/react/hooks/#params-2) del hook _useMutation_.
597+
Debemos manejar la excepción. Podemos registrar una función de manejo de errores en la mutación usando *onError* [option](https://www.apollographql.com/docs/react/api/react/hooks/#params-2) del hook *useMutation*.
614598
615-
Registremos la mutación en un controlador de errores, que usa la función _setError_ que recibe como parámetro para establecer un mensaje de error:
599+
Registremos la mutación en un controlador de errores, que usa la función *setError* que recibe como parámetro para establecer un mensaje de error:
616600
617601
```js
618602
const PersonForm = ({ setError }) => {
@@ -635,7 +619,6 @@ const PersonForm = ({ setError }) => {
635619
636620
Tenemos que buscar bastante en el objeto de error hasta encontrar el mensaje de error correcto...
637621
638-
<!-- Renderöidään mahdollinen virheilmoitus näytölle -->
639622
Entonces podemos mostrar el mensaje de error en la pantalla según sea necesario
640623
641624
```js
@@ -709,7 +692,7 @@ export const EDIT_NUMBER = gql`
709692
`
710693
```
711694
712-
El componente <i>PhoneForm</i> responsable del cambio es sencillo. El formulario tiene campos para el nombre de la persona y el nuevo número de teléfono, y llama a la función _changeNumber_. La función se realiza mediante el hook _useMutation_.
695+
El componente <i>PhoneForm</i> responsable del cambio es sencillo. El formulario tiene campos para el nombre de la persona y el nuevo número de teléfono, y llama a la función *changeNumber*. La función se realiza mediante el hook *useMutation*.
713696
Se han resaltado líneas interesantes en el código.
714697
715698
```js
@@ -773,17 +756,14 @@ Esto sucede porque cada persona tiene un campo de identificación de tipo <i>ID<
773756
774757
El código actual de la aplicación se puede encontrar en [Github](https://github.com/fullstack-hy2020/graphql-phonebook-frontend/tree/part8-4) branch <i>part8-4</i>.
775758
776-
<!-- Sovelluksessa sobre vielä pieni ongelma. Jos yritämme vaihtaa olemattomaan nimeen liittyvän puhelinnumeron, ei mitään näytä tapahtuvan. Syynä tälle on se, että jos nimeä vastaavaa henkilöä ei löydy, vastataan kyselyyn <i> null </i>: -->
777759
Nuestra aplicación todavía tiene un pequeño defecto. Si intentamos cambiar el número de teléfono por un nombre que no existe, parece que no pasa nada.
778760
Esto sucede porque si no se puede encontrar una persona con el nombre de pila, la respuesta de mutación es <i>nula</i>:
779761
780762
![](../../images/8/23ea.png)
781763
782-
<!-- Koska kyseessä ei ole GraphQL: n kannalta virhetilanne, ei _onError_-virheenkäsittelijän rekisteröimisestä tässä tilanteessa hyötyä. -->
783-
Para GraphQL esto no es un error, por lo que registrar un controlador de errores _onError_ no es útil.
764+
Para GraphQL esto no es un error, por lo que registrar un controlador de errores *onError* no es útil.
784765
785-
<!-- Voimme generoida virheilmoituksen _useMutation_-hookin toisena parametrina palauttaman mutacion tuloksen kertovan olion _result_ avulla. -->
786-
Podemos usar el campo _result_ devuelto por el hook _useMutation_ como su segundo parámetro para generar un mensaje de error.
766+
Podemos usar el campo *result* devuelto por el hook *useMutation* como su segundo parámetro para generar un mensaje de error.
787767
788768
```js
789769
const PhoneForm = ({ setError }) => {
@@ -809,9 +789,8 @@ const PhoneForm = ({ setError }) => {
809789
}
810790
```
811791
812-
<!-- Jos henkilöä ei löytynt, eli kyselyn tulos _result.data.editNumber_ on _null_, asettaa komponentti propseina saamansa callback -funktion avulla sopivan virheilmoituksen. Virheilmoituksen asettamista kontrolloidaan jälleen useEffect-hookin avulla, eli virheviesti halutaan asetaa ainoastaan ​​jos mutaation tulos _result.data_ muuttuu. -->
813-
Si no se puede encontrar a una persona, o el _result.data.editNumber_ es _null_, el componente usa la función de devolución de llamada que recibió como props para establecer un mensaje de error adecuado.
814-
Queremos configurar el mensaje de error solo cuando el resultado de la mutación _result.data_ cambie, por lo que usamos el hook useEffect para controlar la configuración del mensaje de error.
792+
Si no se puede encontrar a una persona, o el *result.data.editNumber* es *null*, el componente usa la función de devolución de llamada que recibió como props para establecer un mensaje de error adecuado.
793+
Queremos configurar el mensaje de error solo cuando el resultado de la mutación *result.data* cambie, por lo que usamos el hook useEffect para controlar la configuración del mensaje de error.
815794
816795
<!-- useEffect aiheuttaa ESLint-virheilmoituksen: -->
817796
El uso de useEffect provoca una advertencia de ESLint:
@@ -831,8 +810,7 @@ useEffect(() => {
831810
// highlight-end
832811
```
833812
834-
<!-- Voisimme yrittää päästä varoituksesta eroon lisäämällä función _notify_ useEffectin toisena parametrina olevaan taulukkoon: -->
835-
Podríamos intentar deshacernos de la advertencia agregando la función _setError_ al segundo arreglo de parámetros de useEffect:
813+
Podríamos intentar deshacernos de la advertencia agregando la función *setError* al segundo arreglo de parámetros de useEffect:
836814
837815
```js
838816
useEffect(() => {
@@ -844,7 +822,7 @@ useEffect(() => {
844822
// highlight-end
845823
```
846824
847-
Sin embargo, esta solución no funciona si la función _notify_ no está envuelta en una función [useCallback](https://reactjs.org/docs/hooks-reference.html#usecallback). Si no es así, el resultado es un bucle sin fin. Cuando el componente _App_ se rerenderiza después de haber retirado una notificación, un <i>nueva versión</ i> de _notify_ se crea lo que hace que la función de efectos que se ejecute lo que provoca una nueva notificación y así sucesivamente una así sucesivamente...
825+
Sin embargo, esta solución no funciona si la función &*notify* no está envuelta en una función [useCallback](https://reactjs.org/docs/hooks-reference.html#usecallback). Si no es así, el resultado es un bucle sin fin. Cuando el componente *App* se rerenderiza después de que se haya ocultado una notificación, una <i>nueva versión</i> de *notify* se crea lo que hace que la función de *useEffect* que se ejecute lo que provoca una nueva notificación y así sucesivamente una así sucesivamente...
848826
849827
El código actual de la aplicación se puede encontrar en [Github](https://github.com/fullstack-hy2020/graphql-phonebook-frontend/tree/part8-5) branch <i>part8-5</i>.
850828

0 commit comments

Comments
 (0)