我有一個Redux形式,它應該像它一樣工作,除了一件事:我需要創建一個複選框數組,以便用戶可以在多個選項之間進行選擇。複數形式的複選框
在HTML/PHP一個會寫類似的東西:
<form>
…
<input type="checkbox" name="item[]" value="120" />
<input type="checkbox" name="item[]" value="231" />
…
</form>
所以上了Serverside(檢查假定每個盒)一個將接收像這樣的數組:$item = [120, 231]
,其中所述陣列中的每個項目對應於該複選框的值。
做同樣的一個終極版形式像這樣:
let items = [{name:…, value:…}, …];
<form>
{items.map(item => {
<Field component="input"
type="checkbox"
name={item.name + '[]'}
value={item.value}
})}
</form>
導致這些輸入:<input type="checkbox" name="item[]" value="true" />
,究竟是不是我所期待的。另外,選中複選框,檢查每個數組。
所以我改變了<Field />
的name屬性
name={`item[${item.value}]`}
什麼使複選框按預期,但反過來導致數據提交時:
{
//index: 0, 1, ,…, 120, 121, … ,231, …
item: [undefinded,undefined,…,true,undefined,…,true,undefined,…]
}
所以我的問題是:我是否在創建複選框時出錯,尤其是它們的名稱,或者是否需要在初始化時和第二次提交時轉換數據?
如果我必須轉換數據,那麼最好的地方在哪?
刪除值屬性。 –