Håndtering av Tilstand med useState-Hooken
Hooken useState er en grunnleggende React-hook som gjør det mulig for funksjonelle komponenter å ha tilstand. Den gir en måte å deklarere og oppdatere tilstandsvariabler i en komponent.
Syntaks:
For å bruke hooken useState, kaller vi den og sender inn den opprinnelige tilstanden (initialState) som et argument. Den returnerer et array med to elementer: den nåværende tilstandsverdien (state) og en funksjon (setState) for å oppdatere tilstanden.
const [state, setState] = useState(initialState);
-
Det er mulig å velge hvilket som helst ord som navn på en
state-variabel. Det anbefales å bruke et variabelnavn som nøyaktig beskriver hvilken tilstand som lagres eller oppdateres, for eksempelinputValue,page,number,nameog lignende. -
På samme måte har man fleksibilitet i valg av funksjonsnavn når man bruker
setState-funksjonen. Likevel er det en standardkonvensjon å følge et bestemt mønster: navnet påsetState-funksjonen bør starte med "set" etterfulgt av navnet på den tilhørende tilstandsvariabelen. For eksempel, hvisstate-variabelen ermail, vil den tilhørendesetState-funksjonen vanligvis hetesetMail.
Merk
Når vi kaller
setState, re-renderer React komponenten og oppdaterer tilstanden med den nye verdien. Det er viktig å merke seg at når man brukeruseState, trenger ikke tilstandsvariabelen å være et objekt. Den kan være en primitiv verdi (som et tall, en streng eller en boolean) eller en kompleks verdi (som et array eller objekt).
Eksempel 1:
Vi skal bygge Counter-komponenten, som vil håndtere sin egen tilstand. Når knappen Increment klikkes, oppdateres tilstanden og komponenten rendres på nytt.
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>
);
};
I dette eksempelet brukes useState-hooken til å deklarere en tilstandsvariabel count med startverdi 0. Funksjonen setCount brukes til å oppdatere variabelen count hver gang knappen klikkes.
Forklaring linje for linje:
- Linje 1: Vi importerer
useState-hooken fra React-biblioteket for å benytte dens funksjonalitet; - Linje 3: Vi definerer
Counter-komponenten ved å bruke konvensjonell funksjonssyntaks; - Linje 4: Vi initialiserer tilstanden ved hjelp av
useState-hooken;
countrepresenterer verdien til telleren. Startverdien er0, spesifisert i parentesen tiluseState(0);setCounter funksjonen som oppdaterer tilstanden ved behov.
- Linje 6-8: Denne JavaScript arrow-funksjonen håndterer logikken for å oppdatere tilstanden. Den kjøres når "increment"-knappen klikkes. Inne i funksjonen bruker vi
setCount-funksjonen for å oppdatere tilstanden; - Linje 10-15: Gjengir komponentens markup. På linje 12 vises den nåværende tilstandsverdien (
count). Knappen på linje 13 bruker attributtetonClickfor å definere funksjonen som skal kjøres ved klikk. I dette tilfellet sender vi innincrement-funksjonen.
Full app-kode:
Eksempel 2:
Vi konstruerer Form-komponenten med sin egen uavhengige tilstand. Brukeren blir bedt om å skrive inn navnet sitt i input-feltet, og avhengig av hva som skrives inn, vil vi endre det viste innholdet.
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>
);
};
I dette eksempelet brukes useState-hooken til å deklarere en tilstandsvariabel userName med en initialverdi som en tom streng. Funksjonen setUserName oppdaterer variabelen userName når det er nødvendig.
Forklaring linje for linje:
- Linje 1: Vi importerer
useState-hooken fra React-biblioteket for å bruke funksjonaliteten; - Linje 3: Vi definerer
Form-komponenten ved å bruke standard funksjonssyntaks; - Linje 4: Vi setter initial tilstand ved å bruke
useState-hooken;userNamerepresenterer verdien til input-feltet, som i utgangspunktet er satt til en tom streng (""), spesifisert i parentesen tiluseState("");
setUserNameer funksjonen som lar oss oppdatere tilstanden ved behov.
- Linje 6-9: Denne JavaScript arrow-funksjonen håndterer logikken for å oppdatere tilstanden. Den utløses når brukeren skriver noe i feltet. Vi henter input-verdien i funksjonen ved å bruke
event.target.value. Deretter bruker visetUserName-funksjonen for å oppdatere tilstanden med verdien fra input-feltet; - Linje 11-21: Komponentens markup blir gjengitt.
- På linje 15 setter vi
userNamesom initialverdi for input ved å brukevalue-attributtet; - På linje 16 bruker vi
onChange-attributtet for å spesifisere funksjonen som skal kalles når det skjer en endring i input.
- På linje 15 setter vi
Full app-kode:
1. Hvilket av følgende utsagn er sant om useState-hooken?
2. Hva er formålet med setState-funksjonen som returneres av useState-hooken?
3. Hvordan setter du initialverdien for tilstanden når du bruker useState-hooken?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 2.17
Håndtering av Tilstand med useState-Hooken
Sveip for å vise menyen
Hooken useState er en grunnleggende React-hook som gjør det mulig for funksjonelle komponenter å ha tilstand. Den gir en måte å deklarere og oppdatere tilstandsvariabler i en komponent.
Syntaks:
For å bruke hooken useState, kaller vi den og sender inn den opprinnelige tilstanden (initialState) som et argument. Den returnerer et array med to elementer: den nåværende tilstandsverdien (state) og en funksjon (setState) for å oppdatere tilstanden.
const [state, setState] = useState(initialState);
-
Det er mulig å velge hvilket som helst ord som navn på en
state-variabel. Det anbefales å bruke et variabelnavn som nøyaktig beskriver hvilken tilstand som lagres eller oppdateres, for eksempelinputValue,page,number,nameog lignende. -
På samme måte har man fleksibilitet i valg av funksjonsnavn når man bruker
setState-funksjonen. Likevel er det en standardkonvensjon å følge et bestemt mønster: navnet påsetState-funksjonen bør starte med "set" etterfulgt av navnet på den tilhørende tilstandsvariabelen. For eksempel, hvisstate-variabelen ermail, vil den tilhørendesetState-funksjonen vanligvis hetesetMail.
Merk
Når vi kaller
setState, re-renderer React komponenten og oppdaterer tilstanden med den nye verdien. Det er viktig å merke seg at når man brukeruseState, trenger ikke tilstandsvariabelen å være et objekt. Den kan være en primitiv verdi (som et tall, en streng eller en boolean) eller en kompleks verdi (som et array eller objekt).
Eksempel 1:
Vi skal bygge Counter-komponenten, som vil håndtere sin egen tilstand. Når knappen Increment klikkes, oppdateres tilstanden og komponenten rendres på nytt.
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>
);
};
I dette eksempelet brukes useState-hooken til å deklarere en tilstandsvariabel count med startverdi 0. Funksjonen setCount brukes til å oppdatere variabelen count hver gang knappen klikkes.
Forklaring linje for linje:
- Linje 1: Vi importerer
useState-hooken fra React-biblioteket for å benytte dens funksjonalitet; - Linje 3: Vi definerer
Counter-komponenten ved å bruke konvensjonell funksjonssyntaks; - Linje 4: Vi initialiserer tilstanden ved hjelp av
useState-hooken;
countrepresenterer verdien til telleren. Startverdien er0, spesifisert i parentesen tiluseState(0);setCounter funksjonen som oppdaterer tilstanden ved behov.
- Linje 6-8: Denne JavaScript arrow-funksjonen håndterer logikken for å oppdatere tilstanden. Den kjøres når "increment"-knappen klikkes. Inne i funksjonen bruker vi
setCount-funksjonen for å oppdatere tilstanden; - Linje 10-15: Gjengir komponentens markup. På linje 12 vises den nåværende tilstandsverdien (
count). Knappen på linje 13 bruker attributtetonClickfor å definere funksjonen som skal kjøres ved klikk. I dette tilfellet sender vi innincrement-funksjonen.
Full app-kode:
Eksempel 2:
Vi konstruerer Form-komponenten med sin egen uavhengige tilstand. Brukeren blir bedt om å skrive inn navnet sitt i input-feltet, og avhengig av hva som skrives inn, vil vi endre det viste innholdet.
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>
);
};
I dette eksempelet brukes useState-hooken til å deklarere en tilstandsvariabel userName med en initialverdi som en tom streng. Funksjonen setUserName oppdaterer variabelen userName når det er nødvendig.
Forklaring linje for linje:
- Linje 1: Vi importerer
useState-hooken fra React-biblioteket for å bruke funksjonaliteten; - Linje 3: Vi definerer
Form-komponenten ved å bruke standard funksjonssyntaks; - Linje 4: Vi setter initial tilstand ved å bruke
useState-hooken;userNamerepresenterer verdien til input-feltet, som i utgangspunktet er satt til en tom streng (""), spesifisert i parentesen tiluseState("");
setUserNameer funksjonen som lar oss oppdatere tilstanden ved behov.
- Linje 6-9: Denne JavaScript arrow-funksjonen håndterer logikken for å oppdatere tilstanden. Den utløses når brukeren skriver noe i feltet. Vi henter input-verdien i funksjonen ved å bruke
event.target.value. Deretter bruker visetUserName-funksjonen for å oppdatere tilstanden med verdien fra input-feltet; - Linje 11-21: Komponentens markup blir gjengitt.
- På linje 15 setter vi
userNamesom initialverdi for input ved å brukevalue-attributtet; - På linje 16 bruker vi
onChange-attributtet for å spesifisere funksjonen som skal kalles når det skjer en endring i input.
- På linje 15 setter vi
Full app-kode:
1. Hvilket av følgende utsagn er sant om useState-hooken?
2. Hva er formålet med setState-funksjonen som returneres av useState-hooken?
3. Hvordan setter du initialverdien for tilstanden når du bruker useState-hooken?
Takk for tilbakemeldingene dine!