Tutaj zrobiłem Ci przykład online, żeby pokazać jak to działa https://stackblitz.com/edit/react-zxodum?file=src%2FApp.js
import React, { useState } from 'react';
const App = () => {
const [counter, setCounter] = useState(0);
const [randomValue, setRandomValue] = useState(() => {
return Math.random();
});
const otherRandomValue = Math.random();
const updateCounter = () => {
setCounter(counter + 1);
};
return (
<>
<button onClick={updateCounter}>Zaktualizuj licznik</button>
<div>Licznik {counter}</div>
<div>Losowa wartość ustawiona przez useState: {randomValue}</div>
<div>Losowa wartość ustawiana bez useState: {otherRandomValue}</div>
</>
);
};
export default App;
Kliknięcie w przycisk, zmienia stan komponentu, aktualizuje wartość zmiennej counter
i zmusza komponent do ponownego renderowania.
Przy każdym ponownym renderowaniu wartość tej zmiennej
const otherRandomValue = Math.random();
będzie się zmieniać, gdy ten zapis przez useState
pozostanie bez zmian
const [randomValue, setRandomValue] = useState(() => {
return Math.random();
});
Wartość przypisana przez useState zostaje niezmienna pomiędzy kolejnymi metodami cyklu życia https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/