• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React - użycie setState

Object Storage Arubacloud
0 głosów
75 wizyt
pytanie zadane 29 września 2020 w JavaScript przez User007 Bywalec (2,400 p.)

Hej.

Czy ktoś może mi wytłumaczyć dlaczego podobno taki sposób updatowanie state:

this.setState((prevState) => {
    return {
        logs: prevState.logs.filter(log => log.id !== id)
    };
});

jest lepszy niż taki:

this.setState({
    logs: this.state.logs.filter(log => log.id !== id)}
);

W drugim przypadku może dojść do jakiegoś "race condition". Co to jest?

Dziękuję,

1 odpowiedź

0 głosów
odpowiedź 29 września 2020 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 30 września 2020 przez User007
 
Najlepsza

https://en.reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous

Własności komponentu: this.state i this.props mogą być przez Reacta aktualizowane asynchronicznie, przez co w przypadku wyliczania nowego stanu dla komponentu na podstawie tych własności, może zajść ryzyko użycia nieaktualnych danych. Używając callbacka, w argumentach otrzymuje się wartości poprzedniego stanu i propsów aktualne na moment aktualizacji stanu - gdy używa się this.setState bez callbacka, nie ma gwarancji aktualnych danych.

komentarz 30 września 2020 przez User007 Bywalec (2,400 p.)
Zagmatwane to trochę :) A dlaczego takie ryzyko istnieje?
komentarz 30 września 2020 przez ScriptyChris Mędrzec (190,190 p.)
Odpowiedź na Twoje pytanie jest w pierwszych dwóch akapitach podlinkowanej dokumentacji. Jeśli funkcja może być wywołana asynchronicznie, to nie ma gwarancji, że wartości, do których ona się odnosi będą takie same, jak w momencie w którym została użyta.
komentarz 30 września 2020 przez User007 Bywalec (2,400 p.)
Dzięki

Podobne pytania

0 głosów
1 odpowiedź 126 wizyt
pytanie zadane 6 stycznia 2020 w JavaScript przez Mariusz Podgórski Początkujący (400 p.)
0 głosów
0 odpowiedzi 130 wizyt
pytanie zadane 20 listopada 2020 w JavaScript przez Kuba Skoneczny Obywatel (1,780 p.)
0 głosów
0 odpowiedzi 64 wizyt
pytanie zadane 15 października 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...