Angenommen, Sie ein Formular wie unten hat eine neue Person hinzuzufügen:Kommunikation zwischen zwei Reagieren Formularkomponenten mit Redux
In diesem Beispiel, wenn Sie ein Land aus der bevölkerten Auswahlliste wählen, die Das city select-Element wird mit Optionen für das ausgewählte Land gefüllt. Diese Formularseite (PersonCreationForm
) besteht aus folgenden Komponenten:
- CountrySelectionForm
- CitySelectionForm
Die Frage ist: Wie soll ich die Auswahl von CountrySelectionForm
Komponente CitySelectionForm
Komponente kommunizieren? Ich habe ein paar Optionen im Auge, aber ich bin nicht sicher, was der perefered Weg wäre dies in Redux Welt zu handhaben:
- Innerhalb der
PersonCreationForm
Komponente nur durch dieonCountrySelected
Stütze desCountrySelectionForm
Einhaken und vorbei das ErgebnisCitySelectionForm
durch seinecountry
prop. Es ist nicht nötig, Redux für diese Kommunikation zu verwenden. Wenn Sie jedoch diecountry
Requisite ändern, wird eine Änderung inCitySelectionForm
ausgelöst, um Städte basierend auf dem ausgewählten Land von Redux Store zu erhalten. - Bei der Länderauswahl löst die Komponente
PersonCreationForm
die Aktion aus, die angibt, welches Land ausgewählt ist. Basierend darauf wirdPersonCreationForm
benachrichtigt und übergibt das Ergebnis anCitySelectionForm
durch istcountry
Prop. Das löst eine Änderung inCitySelectionForm
aus, um Städte basierend auf dem ausgewählten Land von Redux Store zu erhalten. - Bei der Länderauswahl löst die Komponente
PersonCreationForm
die Aktion aus, die angibt, welches Land ausgewählt ist. Basierend darauf wirdCitySelectionForm
benachrichtigt. Das löst eine Änderung inCitySelectionForm
aus, um Städte basierend auf dem ausgewählten Land von Redux Store zu erhalten.
danke! eine Frage ohne Bezug: Was macht '{fields.country}' dort? ist es eine andere Möglichkeit, Requisiten zu übergeben? Ich nehme an, das ist ein Spread-Operator in ES6, oder? – tugberk
Redux-Form-Container stellt der Komponente "fields" -Stütze zur Verfügung. Und "fields.country" ist eigentlich ein Objekt mit solchen Eigenschaften wie "Wert", "OnChange", "Fehler" und so weiter. Und '{... fields.country}' fügt einfach alle diese Eigenschaften der Komponente hinzu. –
Ich sehe, so ' ' ist äquivalent zu ', richtig? –
tugberk