2017-01-11 32 views
15

Nauczyłem się Redux i część, której jestem niejasny, to: jak dokonać determinacji między używaniem stanu reakcji a sklepu redux, a następnie wysyłanie działań. z mojego dotychczasowego czytania wygląda na to, że mógłbym użyć stanu React zamiast sklepu Redux i nadal robić rzeczy. Rozumiem oddzielenie obaw od korzystania z magazynu Redux i posiadanie tylko jednego komponentu kontenera, a reszta to składnik bezpaństwowy, ale jak mam określić, kiedy należy używać stanu Reakcji Sklep Vs redux nie jest dla mnie zbyt jasny. Czy ktoś może Ci pomóc?Kiedy mogę wybrać Stan reakcji Vs Redux Store

Dzięki!

+1

Jest to powszechny dylemat, przed którym stają ludzie, którzy wchodzą do React Redux. Ale zalecam zrozumienie różnicy między stanem aplikacji a stanem składnika. – semuzaboi

+0

Dan Abramov (twórca Redux) [już odpowiedział na to] (https://github.com/reactjs/redux/issues/1287). – totymedli

Odpowiedz

20

Jeśli państwo nie muszą być udostępniane inne komponenty lub stan nie musi być przechowywany, gdy komponent zostanie odłączony, wtedy możesz po prostu umieścić go w stanie komponentu.

Możesz myśleć, że sklep Redux jest bazą danych front-endu, jeśli masz coś w rodzaju danych produktu pobranych z API, to sklep Redux jest właściwym miejscem; jeśli masz komponent rozwijany, który ma propozycję isOpen, to element nadrzędny tego rozwijanego może po prostu zachować dropdownIsOpen jako stan komponentu.

Aby uzyskać więcej informacji, oto odpowiedź od Dan: https://github.com/reactjs/redux/issues/1287

Również powiedział

tylko 1 składnik pojemnik, a reszta to jako bezpaństwowiec komponent

To jest niepoprawny . Możesz mieć kilka komponentów kontenera. Komponent kontenera może również zawierać inny komponent kontenera.

+0

Tak. – markerikson

0

Z książki:

Przede wszystkim, powinniśmy zawsze pamiętać, że tylko minimalna ilość danych potrzebnych powinny zostać wprowadzone do państwa. Na przykład, jeśli musimy zmienić etykietę po kliknięciu przycisku, nie powinniśmy przechowywać tekstu etykiety, ale powinniśmy jedynie zapisać flagę typu Boolean, którą informuje nas, czy przycisk został kliknięty, czy nie. Po drugie, powinniśmy dodać do stanu tylko te wartości, które chcemy zaktualizować, gdy zdarzenie się wydarzy i dla którego chcemy przywrócić komponent do ponownego renderowania. Innym sposobem sprawdzenia, czy stan jest właściwym miejscem do przechowywania informacji, jest sprawdzenie, czy dane, które utrwalamy, są potrzebne poza samym komponentem lub jego elementami potomnymi. Jeśli wiele komponentów musi śledzić te same informacje, powinniśmy rozważyć użycie menedżera stanu, takiego jak Redux na poziomie aplikacji.