Wpis z mikrobloga

Powiedzmy mamę apkę listującą posty, ktoś dodał posta - powinnienem:
1. wywołać akcję dodania posta i dodać go lokalnie do postów w reducer a potem znów pobrać listę postów z serwera
2. wywołać akcję dodania posta (ale nie obsługiwać jej w reducerze), i potem po prostu pobrać listę postów z serwera?

Bo wydaje mi się złą praktyką wywoływanie akcji i dispatch tylko typu, nie obsługujemy w reducerze nic

#react #frontend #javascript #redux #programowanie #informatyka
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@inteli: Robisz asynchroniczną akcję najpierw: patrzysz czy response jest ok i dopiero wtedy triggerujesz akcję dodania posta obsługiwaną przez reducer.
  • Odpowiedz
@inteli: Dopóki nie będziesz miał response z serwera nie wiesz czy operacja dodania się powiodła. Może się wykrzaczyć serwer w tym czasie i użytkownik będzie przekonany, że post się dodał (bo go widać), ale po odświeżeniu strony zniknie. WIęc w pierwszej kolejności pokazujesz jakiś loader, po otrzymaniu response, dodajesz post.
  • Odpowiedz
@Defekt: Ja wiem, ale właśnie chodzi mi o ten moment kiedy dostalem pozytywną odpowiedź, a jeszcze nie pobrałem listy postów z serwera.

Czy w tym momencie pobrać listę postów z serwera, czy najpierw dodać lokalnie a potem pobierać z serwera?
  • Odpowiedz
@inteli: Chyba czegoś nie rozumiem xD
1. Masz w storze pewne posty (powiedzmy 10 ostatnich)
2. Dodajesz nowy post
4. Nowy post się wyświetla jako pierwszy na liście postów.

O coś takiego chodzi?
Bo jeśli tak to nie bardzo wiem czemu chcesz pobierać jakieś posty z serwera?
  • Odpowiedz
Załóżmy że czas odpowiedzi serwera z REST API to 5s.
Chodzi mi o coś takiego:
1. Wchodzisz na strone /addPost
2. Wypełniasz form i klikasz submit
3. Dostałem 200 z serwera, post dodał się prawidłowo, i teraz chce przekierowac użytkownika na listę postów /posts
4. Nie dodałem posta użytkownika lokalnie dlatego użytkownik widzi starą listę postów (przez 5s)
  • Odpowiedz
@inteli: Jeśli serwer wysłał 200 to ja bym śmiało wysyłał akcje add_post_success i dodał ten post do stora. A przy przejściu do /posts i tak pobrał nową listę.
  • Odpowiedz
@Pesio: O to mi chodziło, to jeszcze jedno pytanko, jaka jest najlepsza praktyka na np przekierowanie użytkownika? Powiedzmy po dodaniu posta chce go na strone /posts przekierować?
Wywołuje w AddPostComponent akcję addPost(), przekazywać callback jako parametr i wywolywać callback w tej akcji addPost po poprawnej odpowiedzi serwera? Czy po prostu w akcji addPost przekierować go jeśli się powiodło np tak:

dispatch(changeRoute('/posts');
  • Odpowiedz
@inteli: Taką akcje można wywołać w action creatorze newPostRequest na początku i końcu requesta. Przydaje się w tzw. conditional renderingu jeśli chcemy wyświetlić coś innego w trakcie ładowania.
  • Odpowiedz