如何使用React-Hook-Form在输入中实现set focus,这就是他们的常见问题“如何共享引用用法”的代码,这里是https://www.react-hook-form.com/faqs/#Howtosharerefusage
import React, { useRef } from "react";
import { useForm } from "react-hook-form";
export default function App() {
const { register, handleSubmit } = useForm();
const firstNameRef = useRef();
const onSubmit = data => console.log(data);
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input name="firstName" ref={(e) => {
register(e)
firstNameRef.current = e // you can still assign to ref
}} />
<input name="lastName" ref={(e) => {
// register's first argument is ref, and second is validation rules
register(e, { required: true })
}} />
<button>Submit</button>
</form>
);
}我尝试在useEffect中设置ref的焦点,但它不起作用:
useEffect(()=>{
firstNameRef.current.focus();
},[])在输入内部也是如此:
<input name="firstName" ref={(e) => {
register(e)
firstNameRef.current = e;
e.focus();
}} />发布于 2021-06-02 00:57:43
您可以使用useForm钩子返回的setFocus助手设置焦点(不需要使用自定义引用):
const allMethods = useForm();
const { setFocus } = allMethods;
...
setFocus('inputName');发布于 2020-12-20 20:29:23
你在使用Typescript吗?
如果是,请替换...
const firstNameRef = useRef();
和..。
const firstNameRef = useRef<HTMLInputElement | null>(null);
发布于 2021-01-08 09:46:37
useEffect(() => {
if (firstNameRef.current) {
register(firstNameRef.current)
firstNameRef.current.focus()
}
}, []);
<input name="firstName" ref={firstNameRef} />获取自:https://github.com/react-hook-form/react-hook-form/issues/230
https://stackoverflow.com/questions/63796608
复制相似问题