首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用React-Hook-Form设置ref焦点

如何使用React-Hook-Form设置ref焦点
EN

Stack Overflow用户
提问于 2020-09-08 23:01:01
回答 4查看 11.8K关注 0票数 8

如何使用React-Hook-Form在输入中实现set focus,这就是他们的常见问题“如何共享引用用法”的代码,这里是https://www.react-hook-form.com/faqs/#Howtosharerefusage

代码语言:javascript
复制
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的焦点,但它不起作用:

代码语言:javascript
复制
useEffect(()=>{
   firstNameRef.current.focus();
},[])

在输入内部也是如此:

代码语言:javascript
复制
<input name="firstName" ref={(e) => {
    register(e)
    firstNameRef.current = e;
    e.focus();
}} />
EN

回答 4

Stack Overflow用户

发布于 2021-06-02 00:57:43

您可以使用useForm钩子返回的setFocus助手设置焦点(不需要使用自定义引用):

代码语言:javascript
复制
 const allMethods = useForm();
 const { setFocus } = allMethods;

 ...

 setFocus('inputName');

https://react-hook-form.com/api/useform/setFocus

票数 4
EN

Stack Overflow用户

发布于 2020-12-20 20:29:23

你在使用Typescript吗?

如果是,请替换...

const firstNameRef = useRef();

和..。

const firstNameRef = useRef<HTMLInputElement | null>(null);

票数 3
EN

Stack Overflow用户

发布于 2021-01-08 09:46:37

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63796608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档