Tilan Hallinta useState-Koukulla
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);
-
state-muuttujalle voi valita minkä tahansa nimen. On suositeltavaa käyttää nimeä, joka kuvaa tallennettavaa tai päivitettävää tilaa, kuteninputValue,page,number,namejne.; -
Vastaavasti, kun käytetään
setState-funktiota, funktiolle voi valita nimen vapaasti. Yleisenä käytäntönä funktion nimen tulisi alkaa sanalla "set" ja jatkua vastaavansetState-muuttujan nimellä. Esimerkiksi, josstate-muuttuja onmail, vastaavasetState-funktio olisi tyypillisesti nimeltäänsetMail.
Kun kutsumme setState-funktiota, React renderöi komponentin uudelleen ja päivittää tilan uudella arvolla. On tärkeää huomata, että useState-hookin kanssa tilamuuttujan ei tarvitse olla olio. Se voi olla primitiivinen arvo (kuten numero, merkkijono tai totuusarvo) 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;countedustaa laskurin arvoa. Sen alkuarvo on0, joka määritelläänuseState(0)-kutsussa;
setCounton 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 käyttääonClick-attribuuttia määrittämään suoritettavan funktion painettaessa. Tässä tapauksessa välitetäänincrement-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;
userNameedustaa syötekentän arvoa, joka on aluksi asetettu tyhjäksi merkkijonoksi (""), määriteltynäuseState("")-kutsun sisällä;setUserNameon funktio, jonka avulla tilaa voidaan päivittää tarvittaessa.
- Rivillä 6-9: Tämä JavaScript-nuolifunktio käsittelee tilan päivityslogiikan. Se käynnistyy, kun käyttäjä kirjoittaa kenttään. Syötteen arvo haetaan funktiossa
event.target.valueavulla. Tämän jälkeen käytetäänsetUserName-funktiota tilan päivittämiseen syötekentän arvolla; - Rivillä 11-21: Komponentin merkkaus renderöidään.
- Rivillä 15 asetetaan
userNamesyötekentän alkuarvoksivalue-attribuutilla; - Rivillä 16 käytetään
onChange-attribuuttia määrittämään funktio, joka kutsutaan, kun syötteessä tapahtuu muutos.
- Rivillä 15 asetetaan
Sovelluksen koko koodi:
1. Mikä seuraavista väittämistä pitää paikkansa useState-hookista?
2. Mikä on setState-funktion tarkoitus, joka palautetaan useState-hookista?
3. Miten asetetaan alkuperäinen tilan arvo käytettäessä useState-hookia?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 4
Tilan Hallinta useState-Koukulla
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);
-
state-muuttujalle voi valita minkä tahansa nimen. On suositeltavaa käyttää nimeä, joka kuvaa tallennettavaa tai päivitettävää tilaa, kuteninputValue,page,number,namejne.; -
Vastaavasti, kun käytetään
setState-funktiota, funktiolle voi valita nimen vapaasti. Yleisenä käytäntönä funktion nimen tulisi alkaa sanalla "set" ja jatkua vastaavansetState-muuttujan nimellä. Esimerkiksi, josstate-muuttuja onmail, vastaavasetState-funktio olisi tyypillisesti nimeltäänsetMail.
Kun kutsumme setState-funktiota, React renderöi komponentin uudelleen ja päivittää tilan uudella arvolla. On tärkeää huomata, että useState-hookin kanssa tilamuuttujan ei tarvitse olla olio. Se voi olla primitiivinen arvo (kuten numero, merkkijono tai totuusarvo) 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;countedustaa laskurin arvoa. Sen alkuarvo on0, joka määritelläänuseState(0)-kutsussa;
setCounton 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 käyttääonClick-attribuuttia määrittämään suoritettavan funktion painettaessa. Tässä tapauksessa välitetäänincrement-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;
userNameedustaa syötekentän arvoa, joka on aluksi asetettu tyhjäksi merkkijonoksi (""), määriteltynäuseState("")-kutsun sisällä;setUserNameon funktio, jonka avulla tilaa voidaan päivittää tarvittaessa.
- Rivillä 6-9: Tämä JavaScript-nuolifunktio käsittelee tilan päivityslogiikan. Se käynnistyy, kun käyttäjä kirjoittaa kenttään. Syötteen arvo haetaan funktiossa
event.target.valueavulla. Tämän jälkeen käytetäänsetUserName-funktiota tilan päivittämiseen syötekentän arvolla; - Rivillä 11-21: Komponentin merkkaus renderöidään.
- Rivillä 15 asetetaan
userNamesyötekentän alkuarvoksivalue-attribuutilla; - Rivillä 16 käytetään
onChange-attribuuttia määrittämään funktio, joka kutsutaan, kun syötteessä tapahtuu muutos.
- Rivillä 15 asetetaan
Sovelluksen koko koodi:
1. Mikä seuraavista väittämistä pitää paikkansa useState-hookista?
2. Mikä on setState-funktion tarkoitus, joka palautetaan useState-hookista?
3. Miten asetetaan alkuperäinen tilan arvo käytettäessä useState-hookia?
Kiitos palautteestasi!