[英]How to validate input fields in react?
我正在使用react-hook-form來驗證我在 react 中的表單。
我在做什么
在react-hook-form
我們使用ref
來保存特定輸入的值並用於驗證。
但這里只驗證最后一個,我不知道我錯過了什么。
這就是我正在做的。
<div className="row">
{[...Array(inputHolder).keys()].map((li, index) => (
<div className="col-12 col-sm-12 col-md-8 col-lg-4 col-xl-4">
<div className="form-group">
<input
type="text"
name="name"
id={'name' + index}
className="form-control"
placeholder="F Name"
ref={register({required: 'F name is required'})}
/>
<label className="common_label_form" htmlFor={'name' + index}>
F Name
</label>
{errors.name && (
<div>
<span className="text-danger">{errors.name.message}</span>
</div>
)}
</div>
</div>
))}
</div>;
我需要使我的refs
動態化,但我不知道如何實現。
我想要像[{ name: 'name1' }, { name: 'name2' }]
這樣的數據,這就是我被卡住的原因,一旦我得到數據,我就可以將它推入數組。
使用form
,其中的任何輸入元素( input
、 select
...)都是通過name
屬性標識的,而不是您想象的id
。
map(_, index) => (
<input
name={`name[${index}]`}
ref={register}
/>
)
當您記錄提交數據時,它是這樣的
{
"name": ["1", "2", "3"]
}
錯誤顯示:
{errors.name && errors.name[index] && (
<div>
{errors.name[index].message}
</div>
)}
map(_, index) => (
<input
name={`data[${index}].name`}
ref={register}
/>
)
輸出
{
"data": [
{ "name": "1" },
{ "name": "2" },
{ "name": "3" }
]
}
顯示錯誤
{errors.data && errors.data[index] && errors.data[index].name && (
<div>
{errors.data[index].name.message}
</div>
)}
map(_, index) => (
<input
name={`name_${index}`}
ref={register}
/>
)
輸出:
{
"name_0": "1",
"name_1": "2",
"name_2": "3"
}
錯誤顯示:
{errors["name_" + index] && (
<div>
{errors["name_" + index].message}
</div>
)}
我認為你應該像這樣簡單地改變輸入name
...
<input
type="text"
name={'name' + index} // you should change this
id={'name' + index}
className="form-control"
placeholder="F Name"
ref={register({required: 'F name is required'})}
/>
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.