react-hooks-form 与 reactstrap 冲突
react-hooks-form conflict with reactstrap
我正在尝试将 react-hook-form
添加到我的 reactstrap
表单和输入中,但看起来包之间存在冲突。
import React, { useState, useEffect } from 'react';
import { useForm } from "react-hook-form";
import {
Button,
Form,
Label,
Input
} from 'reactstrap';
import { FormControlLabel, Checkbox, FormGroup } from '@material-ui/core';
...
const { register, handleSubmit, errors } = useForm();
...
const updDetails = (data) => {
console.log(data);
}
return (
<Form onSubmit={handleSubmit(updDetails)}>
<FormGroup className="mr-10 mb-10">
<Label for="compName" className="mr-sm-10">Company Name</Label>
<Input type="text" name="compName" id="compName" placeholder="Company Name"
ref={register({ required: true })} aria-invalid={errors.name ? "true" : "false"}
value={compDetails.compName} onChange={(e) => setCompDetails({...compDetails, compName: e.target.value})}
/>
{errors.name && errors.name.type === "required" && (
<span role="alert">This is required</span>
)}
</FormGroup>
<Button type="submit" className="col-sm-3" color="primary">Update Details</Button>
</Form>
)
...
加载页面时,我可以在浏览器控制台中看到所有输入的警告:Field is missing `name` attribute
。但是,我在上面的代码中将名称添加到每个输入。此外,当我单击 Update Details
并为 compName
提交空值时,它会提交并且数据为空对象。
我不能将 react-hook-form
与 reactstrap
一起使用吗?
谢谢
我不熟悉 reactstrap
代码,但是您可以将名称传递给 register 函数,这样使用它:
ref={register({name: 'input-name', /* rest of options*/})}
希望我能帮到你 :D
您可能必须在 Input
组件上使用 innerRef
而不是 ref
。我在来源 here.
中找到了这个
<Input
type="text"
name="compName"
id="compName"
placeholder="Company Name"
innerRef={register({ required: true })}
aria-invalid={errors.compName ? "true" : "false"}
/>
我正在尝试将 react-hook-form
添加到我的 reactstrap
表单和输入中,但看起来包之间存在冲突。
import React, { useState, useEffect } from 'react';
import { useForm } from "react-hook-form";
import {
Button,
Form,
Label,
Input
} from 'reactstrap';
import { FormControlLabel, Checkbox, FormGroup } from '@material-ui/core';
...
const { register, handleSubmit, errors } = useForm();
...
const updDetails = (data) => {
console.log(data);
}
return (
<Form onSubmit={handleSubmit(updDetails)}>
<FormGroup className="mr-10 mb-10">
<Label for="compName" className="mr-sm-10">Company Name</Label>
<Input type="text" name="compName" id="compName" placeholder="Company Name"
ref={register({ required: true })} aria-invalid={errors.name ? "true" : "false"}
value={compDetails.compName} onChange={(e) => setCompDetails({...compDetails, compName: e.target.value})}
/>
{errors.name && errors.name.type === "required" && (
<span role="alert">This is required</span>
)}
</FormGroup>
<Button type="submit" className="col-sm-3" color="primary">Update Details</Button>
</Form>
)
...
加载页面时,我可以在浏览器控制台中看到所有输入的警告:Field is missing `name` attribute
。但是,我在上面的代码中将名称添加到每个输入。此外,当我单击 Update Details
并为 compName
提交空值时,它会提交并且数据为空对象。
我不能将 react-hook-form
与 reactstrap
一起使用吗?
谢谢
我不熟悉 reactstrap
代码,但是您可以将名称传递给 register 函数,这样使用它:
ref={register({name: 'input-name', /* rest of options*/})}
希望我能帮到你 :D
您可能必须在 Input
组件上使用 innerRef
而不是 ref
。我在来源 here.
<Input
type="text"
name="compName"
id="compName"
placeholder="Company Name"
innerRef={register({ required: true })}
aria-invalid={errors.compName ? "true" : "false"}
/>