reactjs - React Hook Form V7 - Material UI 5 Autocomplete:延迟加载的值未验证
问题描述
我使用带有 Material UI 5 Autocomplete 输入的 react-hook-form V7。我在自动完成中的延迟加载值在第一次提交点击时没有得到验证(但在第二次)。怎么了?
useEffect(() => {
setItemList([
{ id: 1, name: "item1" },
{ id: 2, name: "item2" }
]);
setItemIdSelected(2);
}, []);
[...]
<Autocomplete
options={itemList}
getOptionLabel={(item) => (item.name ? item.name : "")}
getOptionSelected={(option, value) =>
value === undefined || value === "" || option.id === value.id
}
value={
itemIdSelected
? itemList.find((item) => item.id === itemIdSelected)
: ""
}
onChange={(event, items) => {
if (items !== null) {
setItemIdSelected(items.id);
}
}}
renderInput={(params) => (
<TextField
{...params}
{...itemsIdFormHookRest}
label="items"
margin="normal"
variant="outlined"
inputRef={itemsIdFormHookRef}
error={errors.itemsId ? true : false}
helperText={errors.itemsId && "item required"}
required
/>
)}
/>
[...]
请查看代码沙箱上的代码:
解决方案
您应该使用React Hook Form 提供Autocomplete
的组件来包装 Material UI 。Controller
有关详细信息,请参阅文档中的此部分。
我还建议删除useState
保存,因为您还可以通过调用回调或在调用回调之后id
通过 React Hook Form 访问该值。getValues
handleSubmit
这是更新的CodeSandbox。
推荐阅读
- django - 如何为 Vue 和 Django 配置 NGINX?
- django - 哪个模板标签包含使用 django-storage[dropbox] 存储的图像
- javascript - 向下滚动 5 div 主页时有轻微的抖动
- sql - 使用 group by 从表中选择字段名称的结果
- mysql - 如何在 phpmyadmin 中设置没有错误的表?
- javascript - 如何制作带有滚动条的引导媒体列表?
- jupyter-notebook - 从外部访问 Jupyter 笔记本 - 如何允许 google colab 访问本地主机 Jupyter 笔记本?
- python - 如何将 timedelta 转换为小时
- c# - SQL Server 数据库连接字符串问题在不同机器上运行应用程序
- react-native - React Native:模态屏幕的暗背景