useOptimistic w React 19 - Nie rozumiem działania

useOptimistic w React 19 - Nie rozumiem działania

Wątek przeniesiony 2025-02-05 10:46 z JavaScript przez Riddle.

Gouda105
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 487
0

Cześć.
Podążam za tym artykułem: https://medium.com/zestgeek/mastering-reacts-useoptimistic-hook-a-comprehensive-guide-with-examples-75b4637fe760, odnoście useOptimistic. W pierwszym przykładzie pokazana jest obsługa błędu z serwera. Wtedy autor usuwa nowr todo z todos tak jak tutaj:

Kopiuj
 setTodos((prevTodos) => prevTodos.filter((todo) => todo !== newTodo));

jednak dlaczego to robi? Przecież dodał wcześniej todo do optimisticTodos, a nie todos. Przecież po to używamy useOptimistic, żeby odseparować stan optymistyczny od rzeczywistego, więc wśród rzeczywistych todos w przypadku niepowodzenia nie powinno być tego nowego newTodo.

Jeśli ktoś mógłby mi wytłumaczyć jak działa ten hook, szczególnie w aspekcie obsługi niepowodzenia żądania API byłbym bardzo wdzięczny.re

TG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Hej, co prawda nie korzystałem bezpośrednio z tego hooka u siebie w projektach firmowych, ale to raczej wynikało z tego iż mieliśmy tam Reacta w wersji 16x więc nie tam tego hooka zaimplementowanego lecz korzystałem z czegoś takiego jak Relay to takie narzędzie jakby w formie React API, które również umożliwia optymistyczny update stanu. Generalnie z tego co dokumentacja mówi, to ten hook przyjmuje dwa argumenty, pierwszy to stan inicjalny drugi to tzw. callback function jako funkcja służąca do aktualizacji stanu komponentu zaś sama w sobie przyjmuje currentState jako ten stan, który jest teraźniejszy z punktu widzenia komponentu zaś drugi argument tej funkcji to stan optymistyczny czyli { ...currentState, ...optimisticData }, do momentu kiedy na przykład http call do API nie zostanie przeprocesowany przez serwer lub dane nie zapiszą się w bazie to wyświetlany jest stan optimistyczny czyli ten tzw. tymczasowy. Co do usuwania dodanego newTodo do listy todos no to przecież normalnym jest, że jak nie dostaniesz 200 czy tam 204 lub jakikolwiek inny status odpowiedzi niewskazujący na powodzenie akcji to znaczy, że akcja sama w sobie się nie powiodła i trzeba to usunąć, to samo się tyczy wpadania do bloku catch tak jak w przykładzie tego kolesia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.