React - useState - przykłady użycia
W tym artykule chcielibyśmy pokazać prosty przykład użycia hooka useState
w komponencie funkcyjnym w Reakcie.
Poniższy przykład pokazuje, jak zrobić prosty licznik
, który jest inkrementowany przy każdym kliknięciu przycisku button
.
W komponencie App
tworzymy hook useState
, który przechowuje stan
naszego komponentu wewnątrz licznika
. Bardzo ważne jest używanie hooków na początku komponentów (przed return
) - jest to główna zasada obowiązująca w Reakcie.
Do aktualizacji licznika
używamy funkcji setCounter
, przekazując counter + 1
jako nowy stan - powoduje to ponowne renderowanie komponentu App
z nowym stanem.
Uruchamialny przykład:
// ONLINE-RUNNER:browser;
//Note: Odkomentuj wiersze z importami podczas pracy z kompilatorem JSX
//import React from 'react';
const App = () => {
const [counter, setCounter] = React.useState(0);
return (
<div>
<div>Licznik: {counter}</div>
<button onClick={() => setCounter(counter + 1)}>Dodaj 1</button>
</div>
);
};
const root = document.querySelector('#root');
ReactDOM.render(<App />, root );
Przykład użycia useState w komponentach potomnych
Możliwe jest również zachowanie stanu wewnątrz zagnieżdżonych komponentów. Działa to w ten sam sposób - wymaga użycia funkcji useState()
.
Sprawdź poniższy przykład, aby zobaczyć, jak to działa:
// ONLINE-RUNNER:browser;
//Note: Odkomentuj wiersze z importami podczas pracy z kompilatorem JSX
//import React from 'react';
const ChildComponent = () => {
const [counter, setCounter] = React.useState(0);
return (
<div>
<span>[ChildComponent] Licznik: {counter}</span>{' '}
<button onClick={() => setCounter(counter + 1)}>Dodaj 1</button>
</div>
);
};
const App = () => {
const [counter, setCounter] = React.useState(0);
return (
<div>
<div>
<span>[App] Licznik: {counter}</span>{' '}
<button onClick={() => setCounter(counter + 1)}>Dodaj 1</button>
</div>
<ChildComponent />
</div>
);
};
const root = document.querySelector('#root');
ReactDOM.render(<App />, root );