2016-05-08 35 views
6

Używam React + Redux i po przeczytaniu około react-router-redux i redux-router, i po przeczytaniu Dan Abramov's answer, zdecydowałem się użyć "waniliowego" routera reakcji (nie dbam o podróże w czasie itp. W tym momencie).React + Redux + Router - czy powinienem używać jednego stanu/sklepu dla wszystkich stron/komponentów?

Pozostaje tylko otwarte pytanie, jak radzić sobie z sytuacją na różnych trasach. Każde pod-drzewo trasy może być inną i niezależną sekcją w mojej aplikacji (szczególnie gdy staje się większa). Czy nadal dobrą praktyką jest posiadanie jednego sklepu do obsługi wszystkich tras/stron? Czy nie powinienem (przynajmniej) mieć innego sklepu/stanu dla każdej głównej ścieżki trasy?

Myślę, że trasy powinny być czymś w rodzaju bezpaństwowca i niezależne, co oznacza, że ​​jeśli przejdę bezpośrednio do jednego z moich linków, powinien on działać i nie będzie świadomy innych tras rodzeństwa. Czy powinienem to odzwierciedlić w moim sklepie?

Edit

Po pewnym więcej myślenia, myślę, że stosując różne reduktory + "CombineReducers" załatwi. Jedyne co pozostało do dla mnie do sprawdzenia jest to, że stan dawnych tras nie ustępują podczas nawigowania

Odpowiedz

2

On z możliwych rozwiązań, aby sprawdzić, czy stan dawnych tras nie ustępują:

Najważniejsze komponenty poziomu w każdej trasie montuje się i odmontowuje, gdy użytkownik porusza się między stronami. Możesz użyć ich metod cyklu życia, aby wysłać wszystkie zdarzenia redux w celu oczyszczenia swojego stanu.

Na przykład wyślij CLEAN_STATE z componentWillUnmount. Powinieneś złapać to wydarzenie w swoim początkowym stanie wyjściowym reduktora końcowego poziomu. Aby to zrobić, możesz ręcznie wywołać wszystkie zagnieżdżone reduktory jako undefined jako parametr stanu. W takim przypadku każdy reduktor zwróci swój początkowy stan.

+1

Ok. Czy to nie jest jakieś hackie rozwiązanie? Zastanawiam się, czy istnieje na to czystsze rozwiązanie ... –

+1

Cześć, jeszcze jedna wskazówka. Zobacz podział kodu w pakiecie sieci Web. Wspaniały zestaw, który robi to, co opisujesz, to zestaw startowy redux. Być może warto się nim zajrzeć, żeby dowiedzieć się, jak to zrobić. – Deep

+0

@Deep Dzięki, słyszałem o tym, przyjrzę się! –