react-hook-form & ZOD 處理表單陣列型態使用
介紹一下關於如何透過 react-hook-form
來處理物件中陣列型態資料
假設API的Schema結構是
[ { "id": 1, "memberId": 1, "items": [ { "productId": 3, "quantity": 1 } ] }, { "id": 2, "memberId": 2, "items": [ { "productId": 4, "quantity": 2 }, { "productId": 5, "quantity": 1 } ] }]
我們要透過表單來讀寫 items
資料
const data = [
{
id: 1,
memberId: 1,
items: [{ productId: 3, quantity: 1 }],
},
{
id: 2,
memberId: 2,
items: [
{ productId: 4, quantity: 2 },
{ productId: 5, quantity: 1 },
],
},
];
使用 react-hook-form
配合 Controller
要控制陣列型態的表單,需使用 react-hook-form
的 Controller
,透過 name
屬性對應資料結構中的 items
欄位索引:
import { useForm, Controller } from "react-hook-form";const { control } = useForm();<Controller control={control} name={`items.${index}.quantity`} // 對應陣列的索引 render={({ field }) => <input {...field} type="number" placeholder="數量" />}/>;