javascript - 将 HTMLFormElement.reset() 与 Downshift 和 react-hook-form 一起使用
问题描述
我正在使用 DownshiftJS 使用useCombobox
钩子创建一个自动完成组件。一切顺利,并通过react-hook-form
. 不幸的是,我遇到了一个问题react-hook-form
,其中触发该HTMLFormElement.reset()
方法的 reset 函数不会触发 Downshift 组件中的任何状态/输入更改。
这意味着当用户从列表中选择一个项目(这会触发 中的事件Autocomplete
),单击重置按钮,然后再次单击输入时,列表将被过滤为仅先前选择的项目。这是因为所选项目存储在selectedItem
内部状态中。
如何获取重置方法以触发Autocomplete
组件内的更改并清除selectedItem
状态?
我已经在这里隔离了这个问题。
解决方案
您可以React.useEffect
用来检测用户是否点击了重置按钮并在您的Autocomplete
组件中相应地重置所选项目
const [inputItems, setInputItems] = useState(options);
const {
inputValue,
...
} = useCombobox({
items: inputItems,
...
});
React.useEffect(() => {
if (!inputValue) {
// user resets value. Reset selected option
setInputItems(options);
}
}, [inputValue, options, setInputItems]);
现场演示
推荐阅读
- css - npm 与编译过程 sass cammand line
- postgresql - 如何在 PostgreSQL 中添加外键
- azure-pipelines - 为什么我需要在 CICD 管道中使用构建代理?
- r - 从R中的重复数据有条件地选择第n个obs
- java - 带有 Logback 的映射诊断上下文的类型化 JSON 输出
- linux - Busybox 重启对 buildroot Linux 没有影响
- azure-active-directory - 启用 Azure AD '需要用户分配',如何处理同一租户中的未经授权的用户
- apache-flink - Flink:我们应该使用什么来代替命令行选项'-yt'?
- python - 替换 NaN 值
- windows-terminal - 阻止 Windows 终端显示当前目录