Wie kann ich in ReactJS verschachtelte Formularelementwerte abrufen?Geschachtelte Formularwerte reagieren
Beispiel
Let sagen, dass ich ein Formular mit folgenden Elementen haben:
<form onSubmit={handleSubmit(e)}>
<input ref="name" type="text" />
{ /* possibly unlimited number of emails */ }
<input ref="email[]" type="text" />
<input ref="email[]" type="text" />
{ /* possibly unlimited number of book objects */ }
<fieldset>
<input ref="title" type="text" />
<input ref="author" type="text" />
</fieldset>
<fieldset>
<input ref="title" type="text" />
<input ref="author" type="text" />
</fieldset>
</form>
Ich möchte onsubmit Werte dieser Felder erhalten. Der einfachste Weg, und intuitivste wäre durch:
this.refs
Aber es wird alle Refs abflachen und erst im letzten der Array-Elemente zurück. So wird es zurückgeben etwas wie:
{ name: '', email[]: '', title: '', author: '' }
Was ich bekommen sollte wie folgt aussehen:
{ name: '',
email:['', ''],
books: [
{ title: '', author: '' },
{ title: '', author: '' }
]
}
oder etwas ähnliches.
Vielleicht ist die Verwendung von Refs nicht die beste Option, aber ich bin mir nicht sicher über andere Alternativen.
EDIT Executing:
e.target.childNodes
Returns etwas Ähnliches, was ich will erreichen, aber es gibt einfache HTML-Knoten so Werte immer aus ihnen ist ziemlich viel Arbeit (Schreiben einige benutzerdefinierte Methode für Verarbeitungsknotenbaum).
Ich werde Redux Store als ein Modell für mein Formular verwenden, aber ich möchte App-Status bei jeder Änderung nicht aktualisieren. Ich denke es sollte irgendwie möglich sein, alle Werte nur auf submit zu bekommen. – jmarceli
Sie können redux verwenden und diese Methode immer noch verwenden. Wenn Sie Ihren Redu-Speicher aktualisieren, lesen Sie die Daten von "ref" aus dem Status der Komponente. –
Ich weiß, dass es mit Redux funktioniert. Dies ist meine aktuelle Lösung, aber ich suche nach der Möglichkeit, Werte direkt abzurufen, ohne sie mit dem Store synchronisieren zu müssen. – jmarceli