reactjs - ReactJs:重置表单后如何将焦点返回到输入字段
问题描述
重置字段后如何将焦点设置回输入字段?
谢谢
//代码
<div
className={cn("input-border-wrapper", { "is-disabled": disabled })}
>
<input
placeholder={label}
required={optional === null ? !!required`${name}` : !optional}
readOnly={readonly}
aria-describedby={describedByIds}
autoComplete={autocomplete`${name}`}
inputMode={inputmode`${name}`}
{...validations`${name}`}
{...this.props.input}
{...{ disabled, id }}
type={type || inputtype`${name}` || "text"}
ref={refCallback}
/>
</div>
{(optional === null ? !required`${name}` : optional) &&
!hasValue && (
<span className="input-wrapper--optional">{optionalLabel}</span>
)}
<InputIcon
ariaLabel={buttonAriaLabel}
hasClearIcon={
shouldShowClearIcon && hasValue && (isActive || hasError)
}
hasCalendarIcon={
button === "lh-datepicker" || icon === "lh-datepicker"
}
name={button || icon}
onClick={onButtonClick}
onMouseDown={() => clearInputValue(form, name, "")
}
{...{ disabled, hasIcon, hasButton }}
/>
解决方案
对于类组件
您应该将 ref 传递给输入
<input ref={inputRef => this.inputRef = inputRef } {...} />
并获取.focus
输入参考上的集合。
resetForm = () => {
this.inputRef.focus()
}
对于功能组件
你应该使用useRef
钩子。
const inputRef = useRef(null);
传递inputRef
给input
<input ref={inputRef} {...} />
并使用(指向已安装的输入元素的至极)获取.focus
输入参考上的集合。current
const resetForm = () => {
inputRef.current.focus()
}
推荐阅读
- flutter - 在 Flutter 中单击具有多个片段的 Navigation Drawer 中的每个项目会重新加载屏幕
- java - 在opengl中的矩形窗口上绘制一个正方形
- c# - 处理 SQLite EF Core 限制 - 基础操作
- vb.net - 我想从串口接收数据,当我收到它时,每个数据都从新行开始,我希望旧数据被新数据更改
- arrays - 如何从love2d中的数组中获取随机索引之一
- r - 在r中提取具有特定列值的数据
- javascript - 为什么我的 React 应用程序在 Chrome Incognito 上启动时会崩溃(由于 Redux)?
- linux - QEMU 在哪里映射来宾操作系统的内核页面?
- python - openwhisk 作曲家是否支持 docker?
- php - SQL 查询 SQLSTATE[42S21]: 列已存在: 1060 列名重复