【发布时间】:2021-08-03 09:11:06
【问题描述】:
在这里我定义了一个选择组件,如果条件为真,我想显示它。 This select field appears when one of the values of the previous select input is selected.但是这里是当新的选择字段(即我的选择组件),我从这个选择中选择一个值,这个值不是由我的表单提交的,并且在我提交表单后执行控制台日志时不存在于我的数据中,但值字段的名称在那里,但不是值。我的控制台中有一条警告说明: 警告:函数组件不能被赋予 refs。尝试访问此 ref 将失败。你的意思是使用 React.forwardRef() 吗?
查看Controller的渲染方法
我的选择组件
export const SelectCompanyField = () => {
// const [page, setPage] = useState(1);
// const [perPage, setPerPage] = useState(10);
const { data, error } = useSWR<ServerResponse, any>(companyUrls.base, url => getDataByParams(companyUrls.base));
console.log("Data", data, "Error", error);
console.log(data?.entities);
return (
<Select
showSearch
placeholder="Choisir une compagnie"
optionFilterProp="children"
filterOption={(input, option: any) =>
option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
>
{data?.entities.map(d => (
<option value={d.index} key={d.id} >
{d.name}
</option>
))}
</Select>
);
};
条件为真时显示的选择组件
<Col md={24} lg={24} sm={24}>
{firstOptionValue &&
<div className="ant-form-item">
<label className="label">Compagnie <span className="text-danger">*</span></label>
<Controller
as={<SelectCompanyField />}
name="company"
control={control}
defaultValue={""}
rules={{ required: false }}
{errors.company && "Company is required"}
</div>
}
</Col>
我的数据提交的控制台日志
{
"firstName": "Atom",
"lastName": "Proton",
"username": "xyz@test.ml",
"password": "00789",
"phoneNumber": "44258569",
"profile": "ADMIN",
"userType": "B2B_CLIENT",
"company": ""
}
带有空引号的公司部分是它应该具有我在选择组件中选择的字段值的部分。 我只想将字段或选项的选定值显示在我的数据中,以便我可以提交我的表单。 谢谢
【问题讨论】:
-
一个不同的用例但类似的错误消息:stackoverflow.com/a/69767229/3556531
标签: reactjs ref react-hook-form