Ich versuche, eine wiederverwendbare Formularkomponente Gruppe (Abschnitt?) Für die Verwendung mit Redux-Form v6 zu machen. Idealerweise möchte ich nicht wissen, dass es wo es innerhalb eines Formulars verwendet wird, so dass ich es überall innerhalb eines Formulars (im Stamm oder verschachtelt) verwenden kann. Wie kann ich das machen?Wie mache ich eine wiederverwendbare Formular-Komponentengruppe mit Redux-Form v6?
Zum Beispiel, ich habe eine Address
Komponente, die Redux-Form des Field
für address1 verwendet, Stadt, Bundesland, Postleitzahl, etc., wie folgt aus:
class Address extends React.Component {
render() {
return (
<Field
component={MyReduxFormInput}
name="address1" // <== How to name for generic case?
/>
)
}
}
Hier ist ein vereinfachtes MyReduxFormInput
:
module.exports = field => {
return <input {...field.input} />
}
Ich erstelle ein Formular, wo ich die Adresse des Benutzers, sowie mehrere Adressen von einigen professionellen Referenzen sammeln muss. Also, ich möchte Address
einmal an der Wurzel und mehrfach in einer verschachtelten Weise verwenden. Der Trick ist, ich kann nicht einfach Address
verwenden, wie ich es oben geschrieben habe, denn während das für die Root-Adresse funktioniert, wird es nicht für verschachtelte Situationen funktionieren. Wie in der FieldArray example docs gezeigt, muss die name
, die an Field
geliefert wird, name={`${member}.address1`}
sein. Aber dann würde das nicht an der Wurzel funktionieren.
Eine Idee, die mir gerade eingefallen ist, ist, dass die Address
Komponente ein member
Argument nimmt, das an der Wurzel leer wäre. Ich werde es versuchen und melden. Aber ich dachte, Redux-Form Field
Komponenten würden automatisch ihre Verschachtelungsebene bewusst sein; Sie sollten ihre Hierarchie nachschlagen und ihr erforderliches name
Präfix kennen.
Die Stunden, die ich dies die Hierarchie beteiligt zu lösen verschwendet versuchen, durchqueren (mit 'React.Children' stuff) und dynamisches Ändern jeglicher Verwendung von 'Field' durch Ändern des' name' -Arguments, um das Präfix einzuschließen. Dies funktionierte, aber da es neue Komponenten erstellt, wird es mit dem Status fehlerhaft, wenn der Benutzer versucht, in ein Feld zu klicken (sie müssten mehrmals klicken). Aber ich frage mich, ob man stattdessen einfach die Hierarchie nachschlagen könnte und wann immer z.B. ein 'FieldArray' gefunden wird, benutze seinen Namen als Namenspräfix? –