Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Tilan Hallinta UseState-Hookilla | React-hookit ja Konteksti Tilanhallintaan
React-mestaruus

bookTilan Hallinta UseState-Hookilla

useState-hook on keskeinen React-hook, jonka avulla funktiokomponentit voivat hallita tilaa. Se mahdollistaa tilamuuttujien määrittelyn ja päivittämisen komponentin sisällä.

Syntaksi:

useState-hookia käytetään kutsumalla sitä ja antamalla alkuperäinen tila (initialState) argumenttina. Se palauttaa taulukon, jossa on kaksi alkiota: nykyinen tilan arvo (state) ja funktio (setState), jolla tilaa päivitetään.

const [state, setState] = useState(initialState);
  • Voimme valita minkä tahansa sanan state-muuttujan nimeksi. On suositeltavaa käyttää nimeä, joka kuvaa tallennettavaa tai päivitettävää tilaa, kuten inputValue, page, number tai name.

  • Vastaavasti setState-funktion käytössä on joustavuutta funktion nimen valinnassa. Kuitenkin vakiintunut käytäntö on nimetä setState-funktion nimen alkaen "set"-etuliitteellä ja lisäämällä tilamuuttujan nimi perään. Esimerkiksi, jos state-muuttuja on mail, vastaava setState-funktio olisi nimeltään setMail.

Huomio

Kun setState-funktiota kutsutaan, React renderöi komponentin uudelleen ja päivittää tilan uudella arvolla. On tärkeää huomioida, että useState-hookin kanssa tilamuuttujan ei tarvitse olla olio. Se voi olla primitiivinen arvo (kuten numero, merkkijono tai boolean) tai monimutkaisempi arvo (kuten taulukko tai olio).

Esimerkki 1:

Rakennetaan Counter-komponentti, joka ylläpitää omaa tilaansa. Kun "Increment"-painiketta painetaan, tila päivitetään ja komponentti renderöidään uudelleen.

import React, { useState } from "react";

const Counter = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

Tässä esimerkissä useState-hookia käytetään tilamuuttujan count määrittämiseen, jonka alkuarvo on 0. setCount-funktiolla päivitetään count-muuttuja aina, kun painiketta painetaan.

Rivikohtainen selitys:

  • Rivi 1: Tuodaan useState-hook React-kirjastosta sen toiminnallisuuden hyödyntämiseksi;
  • Rivi 3: Määritellään Counter-komponentti tavanomaisella funktiosyntaksilla;
  • Rivi 4: Alustetaan tila useState-hookilla;
    1. count edustaa laskurin arvoa. Sen alkuarvo on 0, joka määritellään useState(0)-kutsussa;
  1. setCount on funktio, jolla tila päivitetään tarvittaessa.
  • Rivillä 6-8: Tämä JavaScript-nuolifunktio käsittelee tilan päivityslogiikan. Se suoritetaan, kun "increment"-painiketta painetaan. Funktion sisällä käytetään setCount-funktiota tilan päivittämiseen;
  • Rivillä 10-15: Renderöidään komponentin merkkaus. Rivillä 12 näytetään nykyinen tilan arvo (count). Painike rivillä 13 hyödyntää onClick-attribuuttia määrittääkseen suoritettavan funktion painettaessa. Tässä tapauksessa välitetään increment-funktio.

Koko sovelluksen koodi:

Esimerkki 2:

Rakennetaan Form-komponentti, jolla on oma itsenäinen tila. Kehotamme käyttäjää syöttämään nimensä syötekenttään, ja syötteen perusteella muokkaamme näytettävää sisältöä.

import React, { useState } from "react";

const Form = () => {
  const [userName, setUserName] = useState("");

  const handleChange = (event) => {
    const inputValue = event.target.value;
    setUserName(inputValue);
  };

  return (
    <div>
      <input
        type="text"
        value={userName}
        onChange={handleChange}
        placeholder="Your name"
      />
      <p>Hello, {userName}!</p>
    </div>
  );
};

Tässä esimerkissä useState-hookia käytetään tilamuuttujan userName määrittämiseen, jonka alkuarvo on tyhjä merkkijono. setUserName-funktiolla päivitetään userName-muuttuja aina tarvittaessa.

Rivikohtainen selitys:

  • Rivi 1: Tuodaan useState-hook React-kirjastosta sen toiminnallisuuden käyttämiseksi;
  • Rivi 3: Määritellään Form-komponentti käyttämällä tavallista funktiosyntaksia;
  • Rivi 4: Asetetaan alkuperäinen tila useState-hookilla;
    1. userName edustaa syötekentän arvoa, joka on aluksi tyhjä merkkijono (""), määriteltynä useState("")-kutsussa;
  1. setUserName on funktio, jonka avulla tilaa voidaan päivittää tarvittaessa.
  • Rivillä 6-9: Tämä JavaScript-nuolifunktio käsittelee tilan päivityslogiikan. Se laukaistaan, kun käyttäjä kirjoittaa kenttään. Syötteen arvo haetaan funktiossa event.target.value avulla. Tämän jälkeen käytetään setUserName-funktiota tilan päivittämiseen syötekentän arvolla;
  • Rivillä 11-21: Komponentin merkkaus renderöidään.
    1. Rivillä 15 asetetaan userName syötekentän alkuarvoksi value-attribuutilla;
    2. Rivillä 16 käytetään onChange-attribuuttia määrittämään funktio, joka kutsutaan kun syötteessä tapahtuu muutos.

Sovelluksen koko koodi:

1. Mikä seuraavista väittämistä pitää paikkansa useState-hookista?

2. Mikä on setState-funktion tarkoitus, kun se palautetaan useState-hookista?

3. Miten asetat alkuperäisen tilan arvon käytettäessä useState-hookia?

question mark

Mikä seuraavista väittämistä pitää paikkansa useState-hookista?

Select the correct answer

question mark

Mikä on setState-funktion tarkoitus, kun se palautetaan useState-hookista?

Select the correct answer

question mark

Miten asetat alkuperäisen tilan arvon käytettäessä useState-hookia?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain how the useState hook works in more detail?

What are some common use cases for useState in React components?

Can you show how to use multiple useState hooks in a single component?

Awesome!

Completion rate improved to 2.17

bookTilan Hallinta UseState-Hookilla

Pyyhkäise näyttääksesi valikon

useState-hook on keskeinen React-hook, jonka avulla funktiokomponentit voivat hallita tilaa. Se mahdollistaa tilamuuttujien määrittelyn ja päivittämisen komponentin sisällä.

Syntaksi:

useState-hookia käytetään kutsumalla sitä ja antamalla alkuperäinen tila (initialState) argumenttina. Se palauttaa taulukon, jossa on kaksi alkiota: nykyinen tilan arvo (state) ja funktio (setState), jolla tilaa päivitetään.

const [state, setState] = useState(initialState);
  • Voimme valita minkä tahansa sanan state-muuttujan nimeksi. On suositeltavaa käyttää nimeä, joka kuvaa tallennettavaa tai päivitettävää tilaa, kuten inputValue, page, number tai name.

  • Vastaavasti setState-funktion käytössä on joustavuutta funktion nimen valinnassa. Kuitenkin vakiintunut käytäntö on nimetä setState-funktion nimen alkaen "set"-etuliitteellä ja lisäämällä tilamuuttujan nimi perään. Esimerkiksi, jos state-muuttuja on mail, vastaava setState-funktio olisi nimeltään setMail.

Huomio

Kun setState-funktiota kutsutaan, React renderöi komponentin uudelleen ja päivittää tilan uudella arvolla. On tärkeää huomioida, että useState-hookin kanssa tilamuuttujan ei tarvitse olla olio. Se voi olla primitiivinen arvo (kuten numero, merkkijono tai boolean) tai monimutkaisempi arvo (kuten taulukko tai olio).

Esimerkki 1:

Rakennetaan Counter-komponentti, joka ylläpitää omaa tilaansa. Kun "Increment"-painiketta painetaan, tila päivitetään ja komponentti renderöidään uudelleen.

import React, { useState } from "react";

const Counter = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

Tässä esimerkissä useState-hookia käytetään tilamuuttujan count määrittämiseen, jonka alkuarvo on 0. setCount-funktiolla päivitetään count-muuttuja aina, kun painiketta painetaan.

Rivikohtainen selitys:

  • Rivi 1: Tuodaan useState-hook React-kirjastosta sen toiminnallisuuden hyödyntämiseksi;
  • Rivi 3: Määritellään Counter-komponentti tavanomaisella funktiosyntaksilla;
  • Rivi 4: Alustetaan tila useState-hookilla;
    1. count edustaa laskurin arvoa. Sen alkuarvo on 0, joka määritellään useState(0)-kutsussa;
  1. setCount on funktio, jolla tila päivitetään tarvittaessa.
  • Rivillä 6-8: Tämä JavaScript-nuolifunktio käsittelee tilan päivityslogiikan. Se suoritetaan, kun "increment"-painiketta painetaan. Funktion sisällä käytetään setCount-funktiota tilan päivittämiseen;
  • Rivillä 10-15: Renderöidään komponentin merkkaus. Rivillä 12 näytetään nykyinen tilan arvo (count). Painike rivillä 13 hyödyntää onClick-attribuuttia määrittääkseen suoritettavan funktion painettaessa. Tässä tapauksessa välitetään increment-funktio.

Koko sovelluksen koodi:

Esimerkki 2:

Rakennetaan Form-komponentti, jolla on oma itsenäinen tila. Kehotamme käyttäjää syöttämään nimensä syötekenttään, ja syötteen perusteella muokkaamme näytettävää sisältöä.

import React, { useState } from "react";

const Form = () => {
  const [userName, setUserName] = useState("");

  const handleChange = (event) => {
    const inputValue = event.target.value;
    setUserName(inputValue);
  };

  return (
    <div>
      <input
        type="text"
        value={userName}
        onChange={handleChange}
        placeholder="Your name"
      />
      <p>Hello, {userName}!</p>
    </div>
  );
};

Tässä esimerkissä useState-hookia käytetään tilamuuttujan userName määrittämiseen, jonka alkuarvo on tyhjä merkkijono. setUserName-funktiolla päivitetään userName-muuttuja aina tarvittaessa.

Rivikohtainen selitys:

  • Rivi 1: Tuodaan useState-hook React-kirjastosta sen toiminnallisuuden käyttämiseksi;
  • Rivi 3: Määritellään Form-komponentti käyttämällä tavallista funktiosyntaksia;
  • Rivi 4: Asetetaan alkuperäinen tila useState-hookilla;
    1. userName edustaa syötekentän arvoa, joka on aluksi tyhjä merkkijono (""), määriteltynä useState("")-kutsussa;
  1. setUserName on funktio, jonka avulla tilaa voidaan päivittää tarvittaessa.
  • Rivillä 6-9: Tämä JavaScript-nuolifunktio käsittelee tilan päivityslogiikan. Se laukaistaan, kun käyttäjä kirjoittaa kenttään. Syötteen arvo haetaan funktiossa event.target.value avulla. Tämän jälkeen käytetään setUserName-funktiota tilan päivittämiseen syötekentän arvolla;
  • Rivillä 11-21: Komponentin merkkaus renderöidään.
    1. Rivillä 15 asetetaan userName syötekentän alkuarvoksi value-attribuutilla;
    2. Rivillä 16 käytetään onChange-attribuuttia määrittämään funktio, joka kutsutaan kun syötteessä tapahtuu muutos.

Sovelluksen koko koodi:

1. Mikä seuraavista väittämistä pitää paikkansa useState-hookista?

2. Mikä on setState-funktion tarkoitus, kun se palautetaan useState-hookista?

3. Miten asetat alkuperäisen tilan arvon käytettäessä useState-hookia?

question mark

Mikä seuraavista väittämistä pitää paikkansa useState-hookista?

Select the correct answer

question mark

Mikä on setState-funktion tarkoitus, kun se palautetaan useState-hookista?

Select the correct answer

question mark

Miten asetat alkuperäisen tilan arvon käytettäessä useState-hookia?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2
some-alt