Wpis z mikrobloga

mam coś takiego:

let [test, setTest] = useState([]);

Wygląda na to, że jak w useEffect zrobiłem:
let x = test;
to nie skopiowałem wartości do x tylko tak naprawdę dalej operuję na zmiennej test

Z tego co wiem to nie powinienem operować na zmiennej test bo użyłem useEffect.
Powinienem ją ustawiać za pomocą setTest.
Jak prawidłowo skopiować wartości z test tak, żeby x nie wskazywało na test ?

#react #javascript
  • 7
@scorpio18k: Musisz sobie w głowie zmienić mentalny model.

W dużym skrócie, w JSie jeśli przypisujesz wartość do tzw. primitives (np. string, number, boolean, null), to dane te są niemutowalne. Tworzy się "kopia" tej informacji.

Jeśli jednak robisz przypisanie x = test (gdzie test to np. obiekt), to tak naprawdę nie tworzy się kopia danych, ale tworzysz nową referencję. Zmienna x po prostu wskazuje na zmienną test, która to wskazuje na jakieś