Mam aplikacje React. W useRef mam wartość sequence, która jest szeregiem liczb (number[]). W kontekście chcę sobię zapisać początkową wartość sequence ponieważ po zakończeniu jakichś tam działań chcę przywrócić sequence do stanu początkowego. Używam do tego drugiego useRef, którego nazywam w tym wypadku initialSequence. Trzaskam prostą komende:
initialSequence.current = sequence.current Dalej są wykonywane różne działania na sequence, które w końcowym efekcie staje się pustą tablicą. No to na końcu działań robię
sequence.current = initialSequence.current i co... okazuje się że initialSequence również jest puste. Używam console.loga do śledzenia stanu initialSequenceprzez wszystkie wywołania funkcji i wygląda to tak, jakby initialSequence cały czas odwzorowywało stan sequence mimo, że initialSequence zostało tylko raz nadpisane.
Cały dzień nad tym spędziłem i już w-------y w ostateczności spróbowałem zamienić initialSequence na stringa, którego później pod koniec tych różnych działań zmieniam na ciąg liczb i przywracam początkową wartość sequence bez problemu w poniższy sposób.
initialSequence.current = sequence.current.join(" "); sequence.current = initialSequence.current .split(" ") .map((value) => parseInt(value)); O co tu chodzi? Czy array liczb ma jakieś właściwości których nie rozumiem?
@nevill: hasła na dziś: referencje obiektów/tablic i klonowanie obiektów (jak potrzeba to głębokie klonowanie). Skoro to tablica numberów to pewnie wystarczy zrobić sequence.current = [...initialSequence.current]
Mam aplikacje React. W useRef mam wartość sequence, która jest szeregiem liczb (number[]). W kontekście chcę sobię zapisać początkową wartość sequence ponieważ po zakończeniu jakichś tam działań chcę przywrócić sequence do stanu początkowego.
Używam do tego drugiego useRef, którego nazywam w tym wypadku initialSequence.
Trzaskam prostą komende:
initialSequence.current = sequence.currentDalej są wykonywane różne działania na sequence, które w końcowym efekcie staje się pustą tablicą.
No to na końcu działań robię
sequence.current = initialSequence.currenti co...
okazuje się że initialSequence również jest puste. Używam console.loga do śledzenia stanu initialSequenceprzez wszystkie wywołania funkcji i wygląda to tak, jakby initialSequence cały czas odwzorowywało stan sequence mimo, że initialSequence zostało tylko raz nadpisane.
Cały dzień nad tym spędziłem i już w-------y w ostateczności spróbowałem zamienić initialSequence na stringa, którego później pod koniec tych różnych działań zmieniam na ciąg liczb i przywracam początkową wartość sequence bez problemu w poniższy sposób.
initialSequence.current = sequence.current.join(" ");sequence.current = initialSequence.current.split(" ")
.map((value) => parseInt(value));
O co tu chodzi? Czy array liczb ma jakieś właściwości których nie rozumiem?
No i działa. A cały dzień dzisiaj rozkminiałem gdzie ponownie nadpisuje ten początkowy obiekt... Dzięki xD
Jednak nie do końca działało tak jak chciałem, ale po szybkim zapoznaniu z tematem użyłem Array.from i już śmiga. Dzięki