useQuery- ja useMutation-hookit
Noutakaa tietoja useQuerylla, suorittakaa mutaatioita useMutationilla ja käsitelkää lataus-, virhe- ja tietotiloja
useQuery- ja useMutation-hookit on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.
Kyselyn määrittäminen gql:llä
@apollo/client-paketin gql-mallimerkkijonotunniste jäsentää GraphQL-kyselymerkkijonon DocumentNodeksi moduulin lataamisen yhteydessä. Määritelkää kyselyt komponenttien ulkopuolella: const GET_USERS = gql`query GetUsers { users { id name email } }`.
Huomautus: tuotantokoodissa käyttäkää gql-tunnisteella käärittyjä yksinkertaisilla lainausmerkeillä rajattuja merkkijonoja. gql-tunniste hyväksyy JavaScript-lähdekoodissa mallimerkkijonon syntaksin.
useQueryn palauttamat arvot
useQuery(GET_USERS) palauttaa arvot { loading, error, data, refetch, fetchMore, networkStatus }. loading on true alkuperäisen haun aikana. error sisältää mahdolliset GraphQL- tai verkkovirheet. data sisältää kyselyn rakennetta vastaavan kyselytuloksen.
Tarkistakaa loading ja error ensin ennen datan käyttämistä, jotta null-arvoja ei yritetä renderöidä.
Lataus- ja virhenäkymien mallit
Näyttäkää skeleton-komponentti, kun loading on true. Näyttäkää virheilmoitus, jos error on määritetty (käyttäkää error.message-arvoa virheen tekstinä). Näyttäkää varsinainen sisältö vasta, kun data on määritetty ja loading on false.
Tämä kolmen tilan malli (loading / error / data) on Apollo Client -komponenttien vakiomuoto.
Kyselytietojen käyttäminen
data-objekti vastaa GraphQL-kyselyn rakennetta. Kyselyssä query { users { id name } } data.users on joukko {id, name}-objekteja. TypeScript-tyypit täsmäävät, jos käytätte graphql-codegeniä tyypitettyjen hookien generointiin.
Ilman codegeniä data on tyypiltään any. Codegenin kanssa useQuery palauttaa automaattisesti täysin tyypitetyt tiedot.
Muuttujat useQueryssa
Välittäkää muuttujat toisena argumenttina: useQuery(GET_USER, { variables: { id: userId } }). Kysely suoritetaan automaattisesti uudelleen, kun userId muuttuu, aivan kuten useEffectin riippuvuustaulukon perusteella.
Apollo Client tallentaa jokaisen kyselyn ja muuttujien yksilöllisen yhdistelmän erikseen välimuistiin, joten GET_USER arvolla id: "1" ja GET_USER arvolla id: "2" saavat toisistaan riippumattomat välimuistimerkinnät.
Kyselyn ohittaminen
Estäkää kyselyn suorittaminen välittämällä asetuksiin skip: true: useQuery(GET_USER, { skip: !userId }). Apollo ei lähetä pyyntöä, kun skip on true, ja loading on false sekä data on undefined.
Tämä vastaa Apollossa SWR:n null-avainta ja React Queryn enabled: false -asetusta.
Manuaalinen uudelleenhaku
useQueryn palauttama refetch-funktio käynnistää verkkopyynnön fetch policystä riippumatta. Kutsukaa refetch()-funktiota sellaisen käyttäjän toiminnon jälkeen, joka on saattanut muuttaa palvelimen tietoja, esimerkiksi lomakkeen lähettämisen jälkeen.
Välittäkää refetch-funktiolle uudet muuttujat seuraavasti: refetch({ id: newId }, jolloin haku suoritetaan uudelleen eri parametreilla.
Verkon tilan seuranta
Välittäkää asetuksiin notifyOnNetworkStatusChange: true, jotta saatte päivityksiä verkkotilan muuttuessa (haun, uudelleenhaun, kyselyn toiston ja muiden tilanteiden aikana). networkStatus-kenttä sisältää NetworkStatus-enumeraation numeerisen koodin.
Tämä mahdollistaa hienovaraisen "päivitetään parhaillaan"-ilmaisimen näyttämisen taustalla olevan uudelleenhaun aikana ilman nykyisten tietojen piilottamista.
useMutationin allekirjoitus
useMutation(CREATE_USER) palauttaa arvot [mutateFunction, { loading, error, data, reset }]. mutate-funktiota kutsutaan, kun käyttäjä lähettää lomakkeen. Se palauttaa Promisen, jonka sisältö on { data, errors }.
Välittäkää syöte mutaatiolle kutsumalla mutate({ variables: { name: 'Alice', email: 'alice@example.com' } }).
onCompleted- ja onError-takaisinkutsut
Välittäkää useMutation-asetuksiin onCompleted: (data) => navigate('/dashboard') ja onError: (error) => showToast(error.message). Nämä takaisinkutsut suoritetaan, kun mutaatio valmistuu onnistuneesti tai hylätään.
onCompleted vastaanottaa mutaation tulostiedot, joten sitä voi käyttää navigoinnin käynnistämiseen, onnistumisilmoitusten näyttämiseen tai lomakkeiden tyhjentämiseen.
Optimistinen vastaus useMutationissa
mutate-kutsun optimisticResponse-asetus kirjoittaa keinotekoisen tuloksen välimuistiin heti ennen palvelimen vastausta. Apollo näyttää optimistiset tiedot välittömästi ja korvaa ne sitten todellisen palvelinvastauksen saapuessa.
Jos mutaatio epäonnistuu, Apollo palauttaa välimuistin automaattisesti optimistista päivitystä edeltäneeseen tilaan, joten käyttöliittymä pysyy yhdenmukaisena.
useQueryn skip-asetus
Mitä useQuerylle tapahtuu, kun skip: true välitetään?
Oppitunnin kertaus
Määritelkää kyselyt gql-tunnisteella, kutsukaa useQuery(QUERY, { variables, skip }) -funktiota ja käsitelkää loading-, error- ja data-tilat. useMutation palauttaa käynnistysfunktion ja tilan sisältävän objektin; kutsukaa sitä muuttujilla ja käsitelkää tulokset onCompleted- ja onError-kutsujen avulla. Optimistiset vastaukset päivittävät välimuistin välittömästi ja palautuvat automaattisesti ennalleen virheen sattuessa.
skip-asetus ja muuttujiin perustuva uudelleenhaku hoitavat ehdollisen ja parametroidun tietojen lataamisen.
Opi React tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 88
- Oppitunnit
- 324
Usein kysytyt kysymykset
Onko oppitunti ”useQuery- ja useMutation-hookit” ilmainen?
Kyllä – oppitunnin ”useQuery- ja useMutation-hookit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”useQuery- ja useMutation-hookit”?
Noutakaa tietoja useQuerylla, suorittakaa mutaatioita useMutationilla ja käsitelkää lataus-, virhe- ja tietotiloja Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”useQuery- ja useMutation-hookit”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?
Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- GraphQL:n perusteet React-kehittäjille
- Apollo Clientin käyttöönotto Reactissa
- useQuery- ja useMutation-hookit
- Apollo-välimuisti: normalisointi ja päivitykset