Ich habe ein Redux-Formular, das funktioniert wie es sollte, außer einer Sache: Ich muss ein Array von Kontrollkästchen erstellen, so dass der Benutzer zwischen mehreren Optionen wählen kann.redux-form-array von checkboxes
In HTML/PHP würde man so etwas schreiben:
<form>
…
<input type="checkbox" name="item[]" value="120" />
<input type="checkbox" name="item[]" value="231" />
…
</form>
So auf Server würde man wie so einen Array erhalten (jeweils Feld unter der Annahme geprüft): $item = [120, 231]
, wobei jedes Element im Array entspricht der Wert des Kontrollkästchens
tut das gleiche mit einer redux-Form wie folgt:
let items = [{name:…, value:…}, …];
<form>
{items.map(item => {
<Field component="input"
type="checkbox"
name={item.name + '[]'}
value={item.value}
})}
</form>
Ergebnisse in diesen Eingaben: <input type="checkbox" name="item[]" value="true" />
, was nicht, was ich erwarten würde. Wenn Sie das Kontrollkästchen aktivieren, wird jedes Array überprüft.
Also änderte ich den Namen Attribut der <Field />
zu
name={`item[${item.value}]`}
was die Kontrollkästchen macht wie erwartet funktionieren, aber in diesen Daten wiederum Ergebnis, wenn vorgelegt:
{
//index: 0, 1, ,…, 120, 121, … ,231, …
item: [undefinded,undefined,…,true,undefined,…,true,undefined,…]
}
Also meine Frage ist : Falsche ich mit der Erstellung der Checkboxen, insbesondere deren Namen, oder muss ich die Daten umwandeln, einmal zur Initialisierungszeit und ein zweites Mal zum Senden?
Wenn ich die Daten transformieren muss, wo wäre der beste Ort dafür?
Wertattribut entfernen. –