Redux w forum internetowym.

0

Cześć, właśnie tworzę forum internetowe żeby poćwiczyć reacta i Noda. Uważacie że warto używać reduxa kiedy mamy backend i wszystko pobieramy przez http? Jestem w trakcie pisania back-endu. Forum nie będzie wybitnie skomplikowane. Tworzenie wątków, dodawanie/usuwanie komentarzy, logowanie i edycja profilu użytkownika, jakaś wyszukiwarka, liczenie odwiedzin i obserwowanie tematów. Sądzicie ze jest sens wciskać tam ten redux? Pytanie do doświadczonych kolegów : jak wy byście napisali frontend?

0

Jak masz funkcje które muszą przechowywać jakiś stan to redux będzie tutaj dobrym pomysłem, imo lepiej go użyć żeby nawet tylko ogarnąć logikę za nim stojącą niż nie, bo jeśli chcesz klepać coś w react to bez reduxa albo jakiegoś mobixa do zarządzania stanem nie pociągniesz

0

@piotrek2137: a do prostych rzeczy state + trzymanie stanu w serwisach/modelach (nie wiem jak to w react sie zwie) nie styknie? W angularze tez się robi moda na reduxa(ngrx), a w większości projektów to niepotrzebne jest.

0

No ja właśnie bardzo chce go użyć bo zawsze warto poćwiczyć. Zastanawiam się tylko czy wysyłanie zapytań bez użycia stora to nie jest przerost formy nad treścią i czy to poprawne.

0

Hmm... Ale jak w ogóle,beż użycia stora? Jak budujesz jakiś widok/komponent to on ma jakiś stan. Ew. wyobrażam sobie, żę reducerów możesz nie użyć bo tylko wyświetlasz coś, ale store musi być. Ponadto skoro budujesz proste forum to użyjesz wszystkich funkcji.Przecież będzie można, dodawać, usuwać, edytować?

Edit: Jeśli to czysto do nauki to jak najbardziej się ucz.

0

Nie wyobrażam sobie aplikacji bez stora, poza takimi na prawdę małymi.
Dla nie dużych aplikacji możesz użyć Context API zamiast Reduxa.

0

No dobrze, w takim razie mam kolejne pytanie. Budujecie to małe forum i tworzenie wątków, dodawanie postow itp realizujecie przez requesty do MongoDB/Expressa. Skoro wszystko jest tak i różni użytkownicy mogą w tym samym czasie wykonywać jakieś akcje to jak ma się do tego redux? Co mógłbym ewentualnie łapać w te reducery? Sam system logowania oparty na JWT. Przez brak doświadczenia mogę kompletnie nie mieć racji dlatego pytam jak najlepiej to zrobić. :D tzn. wszystkie dane i tak lecą do stora bo potem musimy je wcisnąć do komponentów. i tyle?

2

Pomyliłeś(aś?) Zadania poszczególnych warstw systemu. Trzymaniem sesji, autentykacją zajmuje się backend i to on rozdziela zasoby "wlogowanym" użytkownikom. Reduxa używa się na frontendzie, tj. w przeglądarce. Używa się go bardzo upraszczając do łatwego komunikowania się między komponentami w mocno rozbudowanych systemach, ponieważ przekazywanie informacji przez kolejne warstwy komponentów jest nieproduktywne i trudne. Aplikacja w przeglądarce jest połączona tylko jedna sesją, jednego użytkownika. Każdy użytkownik po wejściu na stronę dostaje swój "osobisty" interfejs i wyjątkowe połączenie do serwera.

Edit: Jeśli dopiero zaczynasz programować, weź się może na początek za jedna warstwę backend albo frontend?

0

Skoro wszystko jest tak i różni użytkownicy mogą w tym samym czasie wykonywać jakieś akcje to jak ma się do tego redux?

Z Reduxem jest tak, że rozwiązuje on pewnego rodzaju problemy, które występują w apkach reactowych (i nie tylko, bo Redux nie jest uzależniony od Reacta), jednak pod warunkiem, że zrobisz to odpowiednio. Jeśli nie, to być może wcale tych problemów nie rozwiąże (a może po prostu Redux nie będzie ci nawet potrzebny). Poza tym Redux oprócz rozwiązywania problemów, tworzy też nowe, więc trzeba się zastanowić, czy gra jest warta świeczki. Szerzej o tym pisze sam twórca Reduxa Dan Abramov w swoim artykule "You Might Not Need Redux":

https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367

Przez brak doświadczenia

Na brak doświadczenia najlepsza jest praktyka i próbowanie różnych rzeczy. Moim zdaniem powinieneś tę apkę zrobić korzystając z tradycyjnego stanu w React, bo to jest domyślna opcja. A dopiero potem wysuwać wnioski np. "udało mi się zrobić apkę, Redux nie był potrzebny!" czy "pogubiłem się, użyję następnym razem Reduxa"(a samo użycie Reduxa nic nie gwarantuje swoją drogą), ew. możesz przerabiać apkę w trakcie. Na tym polega nauka.

Zastanawiam się tylko czy wysyłanie zapytań bez użycia stora to nie jest przerost formy nad treścią i czy to poprawne.

Ale wysyłanie zapytań i tak powinno być poza storem(tj. poza reducerami, które są odpowiedzialne za stan w store). Nawet używając Reduxa nie wrzuca się zapytań do reducerów (bo zniszczyło by to całą ideę, że reducery mają nie mieć skutków ubocznych), tylko się robi np. w middleware.

jak wy byście napisali frontend?

Kwestia Redux czy nie Redux to kwestia drugorzędna. Ważniejsze jest oddzielenie widoku od danych - komponent powinien się wyświetlać na podstawie dostarczonych danych, ale komponent nie powinien wysyłać zapytań na serwer, bo nie od tego on jest. Tylko tutaj nie trzeba Reduxa, wystarczy wydzielić "warstwę" (np. osobny moduł), który będzie kontaktował się z serwerem (pomijając kwestię synchronizacji, że komponenty muszą być powiadomione o tym, że są nowe dane ).

Przynajmniej jeśli chodzi o kwestię wysyłania danych.

A w apkach, które korzystają z Reduxa do tego, zwykle jest to tak rozwiązane, że po akcji użytkownika (np. kliknięciu) odpalany jest kod, który wysyła żądanie do serwera, a jak dane przyjdą, to jest odpalana akcja, w której są przekazywane dane z serwera. Jest akcja, a więc reducer się odpala i zmienia stan na podstawie tego co przyszło. Potem Redux widzi, że się zmienił stan i aktualizuje komponenty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1