2016-07-31 13 views
5

buduję aplikację mobilną z reagują-rodzimych i Redux, a ja organizuje mój struktury projektu od funkcji, w ten sposób:Redux dzielące działania między komponentami

komponent1/
--- Component1Actions. js
--- Component1Reducer.js
---...
komponent2/
--- Component2Actions.js
--- Component2Reducer.js
---...

Moim zdaniem tego rodzaju struktura projektu jest niesamowita z wielu powodów, przede wszystkim ze względu na ogromną skalowalność.
Jedyny problem jaki do tej pory napotkałem, to to, że 2 różne komponenty muszą wysłać te same akcje (takie jak zwykła zmiana tekstu w polu tekstowym).
Nie ma sensu przepisywanie dokładnie tej samej akcji w 2 różnych plikach, a także wiem, że importowanie akcji z własnego komponentu do innego jest naprawdę złą praktyką.
Zastanawiałem się nad zachowaniem tego rodzaju "możliwych do podzielenia" działań w module globalnym, a następnie zaimportowałem je do różnych komponentów, ale nie jestem pewien, czy jest to dobra praktyka.
Chciałbym wiedzieć, jak najlepiej radzić sobie z tego rodzaju sytuacjami.
Z góry dziękuję.

+0

moim zdaniem, jeśli nie są czasochłonne sam stan dla różnych elementów w tym samym czasie, można ponownie użyć działania. Ale w przyszłości, jeśli chcesz zachować oba komponenty renderowane w tym samym czasie iw tym samym interfejsie, zmusisz cię do wykonania innego działania dla tego samego. – anoop

+0

dlaczego komponenty nie mogą importować akcji wykonującej wysyłkę? Czy możesz wyjaśnić, dlaczego musisz go powielić? –

+0

@WarrenMir ponieważ ponieważ mój projekt jest zorganizowany według funkcji, jeśli piszę akcję wewnątrz modułu komponentu, to naprawdę źle jest zaimportować ją do innego modułu. –

Odpowiedz

4

Możesz obsłużyć to samo "ACTION_TYPE" w wielu reduktorach.

... działania są z założenia globalne. Nie są one przeznaczone do przywiązany do konkretnego reduktora (Dan Abramov)

Ty mógł obsługiwać „Logout” działania we wszystkich reduktorów, które po prostu wrócić do stanu początkowego .. i ustawić aplikację do domyślnych

np ..

const postReducer = (state = initial, action) => { 
    swtich(action.type) { 
    ... 
    case "LOGOUT": 
    return initial 
    default: 
    return state 
    } 
} 
Powiązane problemy