Wpis z mikrobloga

Próbuję ogarnąć React + Redux w modelu API + klient i mam wątpliwości co do best practice korzystania z wywołań ajaxowych. Czy wszystkie wywołania powinny przechodzić przez reduxa a ich wyniki zapisywane w store? Np. taka sytuacja w której mam listę produktów i na każdej pozycji mam link do szczegółów produktu. Więc komponent listy w metodzie componentDidMount wysyła akcję ładowania produktów i zapisuje je do stanu - następnie renderuję tę listę. Po kliknięciu w szczegóły robię to samo - czyli wysyłam akcję pobierania szczegółów, zapisuje dane produktu w stanie i renderuje komponent ze szczegółami.

Mam wątpliwości czy jest to zgodne ze sztuką- "wyklikanie" wszystkich produktów z listy powoduje efektywnie załadowanie całej bazy do stanu - mimo, że tych danych używa tylko jeden komponent. Trochę mnie to uwiera ale może tak jest najlepiej?

#programowanie #react #redux
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@damyrade: Zależy. Możesz robić reduxem albo możesz wrzucać w stan komponentów. Pierwsze ma ten plus że jak wejdziesz na listę to możesz sobie klikać ile razy chcesz i nie wymaga to dodatkowych strzałów do API. Oczywiście zakładam że sprawdzasz w cdm czy tej listy już czasem nie ma.
  • Odpowiedz
@damyrade: Skoro i tak, żeby zobaczyć szczegóły odnośnie konkretnego produktu musisz wysłać zapytanie do API to zapisz to sobie w storze, żeby nie musieć non stop cisnąć serwera o te same dane, bo po co? Chyba, że klienci patrzą na szczegóły produktu tylko raz i elo, rób sobie co chcesz. ( ͡° ͜ʖ ͡°)
  • Odpowiedz
Ostatnia aplikacja jaka zacząłem pisać w React to bez Reduxa, bo po 2.5 roku pracy nad aplikacją reduxową stwierdzam, że hasło one source of truth tylko ładnie brzmi. Największą zaletą tego jest podgląd całego stora w dev-toolsach. Ale sposób budowania aplikacji i zarządzania tym stanem przy dużej aplikacji to ból.

Tą nową aplikacje o której wsposmniałem, zacząłem pisać w oparciu o hooki, w większości dane trzymam w stanie komponentu, a jak potrzebuje
  • Odpowiedz
@damyrade Jak zaczynasz ogarniać Reacta to ogarnij to na hookach. Szybciej i łatwiej A też stan globalny zrobisz. I tak jak przedmowa napisał do stanu globalnego ladujesz tylko to co ma być globalne. Co ci z tego że masz listę produktów w Global State jak może w każdej chwili ona się zmienić I będziesz miał zdezaktualizowana :/ Ja też ładuje do Global State tylko to co jest konieczne i wiem że
  • Odpowiedz
@damyrade: Przez reduxa przepuszczasz tylko gdy dane zwracane z api będą uwzględniane także gdzieś indziej w aplikacji i maja być dostępne globalnie dla wszystkich podłączonych komponentów. Jeżeli nie, to nie przepuszczasz przez reduxa, proste.
  • Odpowiedz